angle-left

Перенос файлов баз данных MS SQL

Изменение файлов осуществляется с помощью инструкции Transact-SQL ALTER DATABASE.

Для переноса выполнить

use master;
ALTER DATABASE DB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

ALTER DATABASE DB SET OFFLINE;
alter database DB
modify file
(
Name=DBdata,
FileName = 'E:\data\DB.mdf'
) ;
alter database DB3
modify file
(
Name=DBlog,
FileName = 'E:\data\DB_1.ldf'
);

После переноса для возвращения в MULTI USER MODE и состояние ONLINE

ALTER DATABASE DB SET MULTI_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE DB SET ONLINE;

В случае если после перемещения/восстановления возникают ошибки

Error file system permission

 Event 17204, MSSQLSERVER FCB::Open failed: Could not open file E:\data\db.mdf for file number 1.  OS error: 5(failed to retrieve text for this error. Reason: 15100).

 Event 17207, MSSQLSERVER FileMgr::StartLogFiles: Operating system error 2(failed to retrieve text for this error. Reason: 15105) occurred while creating or opening file 'E:\data\db_1.ldf'. Diagnose and correct the operating system error, and retry the operation..

Необходимо проверить права файловой системы на файлы баз данных.

Right permissions for MS DB files

Владельцем должен быть NetworkService (или по крайней мере должны быть даны права Full Control) - необходимо для работы Database Engine с файлом (см. здесь).

Так же необходимо предоставить права Full Control(Полный доступ) экземпляру MS SQL сервера (см. здесь) SQLServerMSSQLUser$HOSTNAME$MSSQLSERVER