Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


microsoft-sql-server:t-sql-script-samples:how-to-move-sql-server-database-files-to-another-directory-or-to-a-different-drive
no way to compare when less than two revisions

Различия

Показаны различия между двумя версиями страницы.


microsoft-sql-server:t-sql-script-samples:how-to-move-sql-server-database-files-to-another-directory-or-to-a-different-drive [24.09.2020 09:15] (текущий) – создано Алексей Максимов
Строка 1: Строка 1:
 +===== Как перенести файлы базы данных SQL Server в другой каталог или на другой диск =====
  
 +{{:microsoft-sql-server:t-sql-script-samples:pasted:20200924-091428.png }} Рассмотрим пример перемещения файлов пользовательской базы данных **SQL Server** в новое месторасположение. В рассматриваемом примере все файлы одной отдельно взятой БД с именем ''EffectOffice'' будут перенесены с одного логического диска на другой (с диска ''T:\'' на диск ''U:\'').
 +
 +Перед началом процедуры переноса файлов базы данных остановим cервисы и приложения, работающие с этой базой данных.
 +
 +
 +Подключимся к экземпляру SQL Server, на котором расположена интересующая нас база данных и выясним текущее размещение файлов БД с помощью запроса: 
 +
 +<code tsql>USE master;
 +SELECT name, physical_name AS CurrentLocation FROM sys.master_files
 +   WHERE database_id = DB_ID('EffectOffice');</code>
 +
 +{{ :microsoft-sql-server:t-sql-script-samples:pasted:20200924-090340.png }}
 +
 +Выполним запрос на закрытие всех соединений к БД и перевод БД в одно-пользовательский режим:
 +
 +<code tsql>ALTER DATABASE [EffectOffice] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;</code>
 +
 +Переведём базу данных в **Offline**-режим: 
 +
 +<code tsql>ALTER DATABASE [EffectOffice] SET OFFLINE;</code>
 +
 +Выполним копирование файлов БД в новое место-расположение с помощью утилиты командной строки **robocopy**, которая позволит нам сохранить все разрешения на каталоги и файлы на уровне NTFS.
 +
 +В нашем примере файлы БД копируются из каталога ''T:\DBCL02-EffectOffice'' в каталог ''U:\DBCL02-EffectOffice''
 +Каталог назначения при этом будет создан в процессе копирования и на него будут скопированы все атрибуты исходного каталога.
 +
 +<HTML><pre style="background:#5a5a62;color:#ffffff;padding:10px;border:0px;">ROBOCOPY "T:\DBCL02-EffectOffice" "U:\DBCL02-EffectOffice" ^
 + /E /B /COPYALL /DCOPY:DAT /V /R:2 /W:10 ^
 + /UNILOG+:U:\Robocopy.log /BYTES /TEE /NP /UNICODE</pre></HTML>
 +
 +
 +Выполним замену путей к файлам на уровне SQL Server запросом вида (отдельный запрос по каждому файлу): 
 +
 +<code tsql>ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_dat', 
 + Filename = 'U:\DBCL02-EffectOffice\EffectOffice.mdf' );
 +
 +ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_log', 
 + Filename = 'U:\DBCL02-EffectOffice\EffectOffice_log.LDF' );
 +
 +ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_Version_dat', 
 + Filename = 'U:\DBCL02-EffectOffice\EffectOffice_Version_dat.ndf' );
 +
 +ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_Message_dat', 
 + Filename = 'U:\DBCL02-EffectOffice\EffectOffice_Message_dat.ndf' );
 +
 +ALTER DATABASE [EffectOffice] MODIFY FILE ( Name = 'EffectOffice_Blob_dat', 
 + Filename = 'U:\DBCL02-EffectOffice\EffectOffice_Blob_dat.ndf' );</code>
 +
 +{{ :microsoft-sql-server:t-sql-script-samples:pasted:20200924-090744.png }}
 +
 +Переведём базу данных в **Online**-режим и обратно включим многопользовательский режим работы с БД
 +
 +<code tsql>ALTER DATABASE [EffectOffice] SET ONLINE
 +ALTER DATABASE [EffectOffice] SET MULTI_USER</code>
 +
 +Запустим сторонние службы и приложения, использующие базу данных и убедимся в штатной работе с данными.
 +
 +После успешного запуска БД и проверок, можем удалить файлы с их исходного местоположения (''T:\DBCL02-EffectOffice'')
 +
 +
 +----
 +Дополнительные источники информации:
 +
 +  * [[https://blog.it-kb.ru/2010/11/27/sql-server-2008-move-db-files-to-another-disk/|Перенос файлов БД tempdb на отдельный диск]]
 +
 +----
 +Проверено на следующих конфигурациях:
 +^ Версия SQL Server         ^
 +| Microsoft SQL Server 2016 Standard Edition SP2 CU14 (13.0.5830.85) |
 +
 +----
 +
 +{{:user:blogroot.png?50&nolink |}} Автор первичной редакции:\\ [[user:blogroot|Алексей Максимов]] \\ Время публикации: 24.09.2020 09:15
 +
 +{{tag>SQL "Microsoft SQL Server" Database T-SQL Transact-SQL "SQL Server 2016"}}
 +
 +~~DISCUSSION~~
microsoft-sql-server/t-sql-script-samples/how-to-move-sql-server-database-files-to-another-directory-or-to-a-different-drive.txt · Последнее изменение: 24.09.2020 09:15 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki