Я использую SQL Server 2008 и хочу настроить задание агента для резервного копирования всех баз данных. Машина, на которой запущен SQL Server, является частью домена Windows. Место назначения для файлов резервных копий находится на другом компьютере, который не входит в домен, поэтому мне нужны другие учетные данные для доступа к нему.
Я создал новую учетную запись домена (SqlBackup), добавил ее как новую учетную запись SQL (предоставил ей «резервную базу данных») и использовал ее для выполнения задания агента. Я вошел в систему локально как этот пользователь, чтобы сопоставить целевой сетевой ресурс с диском (предоставив ему необходимые учетные данные).
Сценарий, который я использую для резервного копирования всех баз данных, просто вызывает «резервную копию базы данных» (в цикле курсора по всем базам данных) и записывает файл резервной копии на подключенный диск. Проблема в следующем. Когда агент SQL выполняет задание от имени пользователя SqlBackup, диск не отображается.
Что я пропустил?
Если ваше задание выполняет команды командной строки, поместите его в .bat
файл для выполнения.
Затем в рамках .bat
файла, перед вашей командой, которая выполняет реальную работу, используйте net use
команда (NET USE drive: share_name /USER:domain/user_id password
) для отображения диска из задания SQL. Вы можете указать любой идентификатор пользователя и пароль. Просто не забудьте отключить диск перед выходом из файла bat (NET USE drive: /delete
), или при следующем запуске он сгенерирует уровень ошибки, который SQL будет интерпретировать как проблему. Когда вы выполняете .bat
файл с этапа задания, "вызовите" .bat
файл (CALL MY_BAT.BAT
) или SQL может перейти к следующему шагу перед .bat
шаг завершен.
IIRC, отображение дисков будет работать только при интерактивном входе в систему - и я считаю, что ваше резервное копирование выполняется как служба. Позволит ли задача резервного копирования SQL добавить учетные данные для целевого диска с использованием пути UNC вместо сопоставления диска?
Службы не могут использовать подключенные диски, и, насколько мне известно, нет способов передать учетные данные с использованием пути UNC. Если сервер, не являющийся доменом, не может быть добавлен к домену, я предлагаю только предоставить права на запись в этот общий ресурс «всем».
Альтернативой может быть сброс резервных копий на их локальные серверные диски, а затем создание пакетного задания «сборщика» на сервере, не являющемся доменом, для извлечения файлов резервных копий в их конечное место назначения.