Проблема:
Имеется MS SQL Server 2005. Необходимо настроить резервное копирование пользовательских баз на сетевой накопитель (NAS) D-Link DNS-32x.
Казалось бы - чего проще - в интерфейсе SQL Server Management Studio создаем новый план обслуживания..
Но при проверке видим, что, если указан сетевой путь на NAS, то бэкапы не создаются, а в логах пишется ошибка доступа к папке. При этом не важно каким образом указан путь до папки на NAS.
А суть проблемы в том, что задания MS SQL Server выполняются НЕ от имени залогиненного пользователя. Следовательно, и все сетевые ресурсы, которые требуют дополнительной аутентификации, необходимо подключать именно от того пользователя, от которого запускается задача MS SQL Server.
Решение:
В интерфейсе SQL Server Management Studio открываем наш план обслуживания и добавляем первым шагом "Задача "Выполнение инструкции T_SQL"":
Код: Выделить всё
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
-- Connecting NAS Drive
EXEC xp_cmdshell 'net use J: \\DNS325\volume_1\Folder /USER:User Password /PERSISTENT:NO'
GO
Здесь:
"J:" - буква диска, на которую подключаем папку с NAS, и куда на следующем шаге плана обслуживания будем ссылаться для создания резервной копии
"\\DNS325\volume_1\Folder" - Сетевой путь до нужно папки на NAS
"/USER:User" - Пользователь, для которого настроен доступ "чтение/запись" на NAS
"Password" - Пароль пользователя
Примечание:
А вот файл отчета для этого плана обслуживания мне не удалось сохранить в папке на NAS, поэтому в "Отчетах и протоколировании" я указал локальный путь для размещения текстового файла отчета.