воскресенье, 21 июня 2015 г.

Backup базы данных MSSQL на сетевой диск


Собственно сам бэкап базы данных Trade1

BACKUP DATABASE Trade1
   TO DISK = '\\sqlsrv\Backup\201507140039.Bak';
GO


Проверка бэкапа:

restore verifyonly DATABASE Trade1
   FROM DISK = '\\main\Backup\201507140039.Bak';
GO


Восстановление:

restore DATABASE Trade1
   FROM DISK = 'e:\Backup\201507140039.Bak';
GO


или так, если восстановить нужно в другое место:

restore  DATABASE Trade1
   FROM DISK = 'e:\Backup\201507140039.Bak'
   WITH RECOVERY,
   MOVE 'Trade1' TO 'e:\SQLBase\Trade1\Trade1.mdf',
   MOVE 'Trade1_log' TO 'e:\SQLBase\Trade1\Trade1_log.ldf'
GO

Но как обычно есть, блядь, грабли. Если MSSQL сервер запущен под пользователем "NT Service\MSSQLSERVER", то это естественно не работает.
Вышел из положения так:

  1. Создал на машине, на которую делал бэкап, пользователя SQLGlobalUser с правами только на папку куда производится бэкап;
  2. На машине на которой крутится SQL сервер создал такого же пользователя и внес его группу администраторов;
  3.  Службу SQL сервера запускаю от имени этого пользователя; 
  4. Пароли и пользователя SQLGlobalUser одинаковые на двух машинах. 
После перезагрузки службы SQL сервера все заработало.



Лучший поставщик комплектующих