пятница, 17 апреля 2009 г.

MSSQL: Бекап на другую машину по сети

Зачем?
  • Нехватка места на локальном сервере

  • FailOver (если накроется сервер - бекап останется)


Как?
1. Установить сетевое устройство для бекапа можно только запросом

USE master;
GO
EXEC sp_addumpdevice ’disk’, ’networkdevice’,
’\\<servername>\<sharename>\<path>\<filename>.bak’

Памятка: нужно указывать полный путь до файла!

2. Проще создать хранимую процедуру для вызова бекап-процесса

BACKUP DATABASE [ваша_бд] TO
[networkdevice] WITH NOFORMAT, INIT,
NAME = N'имя_файла_не_важно', SKIP, REWIND, NOUNLOAD, STATS = 10;

Памятка: имя файла реально не важно. т.к. сервер считает устройство чем-то типа 'Tape'.

3. На сервере-хранителе бекапа нужно на шару поставить разрешения на запись для пользователя сервер-с-бд\имя_юзера (например sql)

4. На сервере-бд создать такого же юзера.

5. ОЧЕНЬ ВАЖНО - нужно, что бы MSSQL-сервер (служба) запускалась под созданным выше юзером. Т.к. иначе не будет доступа к 'шаре' (расшаренному каталогу на другом сервере).

6. Сделать службу (Job). В адвансед-свойствах шага поставить запуск под юзером (см. выше).

Комментариев нет: