Включить SQL Server для резервного копирования на удаленных машинах/дисках

Включить SQL Server для резервного копирования на удаленных машинах/дисках

У меня есть SQL Server (2000, 2005 и 2008), и я хотел бы использовать SQL Agent (или даже простую резервную копию базы данных «xxx» на диске = «yyy») для резервного копирования на удаленные диски.

То есть: у меня есть сопоставленный диск на машине SQL, например: «M:», который сопоставлен с \\otherbox\someshare

По умолчанию SQL Server не позволяет вам делать резервные копии на таких дисках, но я думаю, что есть способ включить это. Может кто-нибудь указать мне на документацию?

Заранее спасибо.

решение1

При указании места назначения используйте UNC-путь — в SQL-агенте нет понятия «подключенных» «дисков».

Кроме того, SQL Agent обычно работает как «локальная служба» или «локальная система» и, как таковой, не имеет прав на удаленные общие ресурсы на других компьютерах.

У вас есть несколько вариантов:

  • Запустите SQL Agent как учетную запись роли в домене. Предоставьте этой учетной записи разрешение на запись в каталог/общий ресурс, где вы хотите хранить резервные копии.

  • Запустите SQL Agent как "Сетевую службу". Он выполнит аутентификацию на сервере общего доступа с учетной записью компьютера домена машины, на которой запущена служба. Предоставьте этой учетной записи разрешение на запись в каталог/общий ресурс, где вы хотите сохранить резервную копию.

  • Если у вас нет домена, создайте учетную запись с одинаковым именем пользователя и паролем на машине, на которой размещен SQL Agent, и на машине, на которой размещены файлы резервных копий. Измените SQL Agent на запуск от имени этой учетной записи «роли» и предоставьте этой учетной записи разрешение на запись в каталог/общий ресурс, где вы хотите сохранить резервную копию. («Домен бедняка»...)

решение2

Я полностью согласен с обоими ответами по поводу пути UNC.

Я также хотел бы добавить, что даже с подключенными дисками у вас есть простой обходной путь. Вы можете выполнить резервное копирование на любой из обычных дисков вашего сервера. И затем вы можете добавить

xp_cmdshell 'XCOPY [source] [destination] \flags'

Команда SQL для задания или скрипта SQL, который вы запускаете.

С помощью xp_cmdshell вы можете сделать еще больше — например, запустить внешний архиватор командной строки, например, 7z, чтобы сжать файл перед его копированием на подключенный диск (когда удаленное соединение слишком медленное...)

PS: Забыл упомянуть, что xp_cmdshell можно включить и отключить с помощью инструмента Surface Area Configuration и с помощью sp_configure (по умолчанию он отключен)

решение3

Если SQL Server не работает под учетной записью домена, вы можете подключить сетевой диск для учетной записи SQLServer (не вашей учетной записи), как описано в этомответ на stackoverflow

Сначала нужно включить xp_cmdshell

-- allow changes to advanced options 
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO

Затем вы можете подключить диск, используя:

EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'

Наконец, вы можете выполнить резервное копирование на этот отображенный диск:

BACKUP DATABASE myDB TO DISK = 'z:\file.bak'

решение4

Имейте в виду, что SQL Server очень нетерпим к задержкам в сети. Если они случаются, а они имеют тенденцию, резервное копирование не будет выполнено. Я вообще не рекомендую эту практику для производственных сред.

Лучше сделать резервную копию локально, а затем скопировать.

Связанный контент