Sql Server Резервное копирование в UNC - PullRequest
13 голосов
/ 19 октября 2008

Я создал план обслуживания на своем сервере SQL Server 2005. Резервная копия должна быть записана на другой сервер. Я использую путь UNC для этого. Пользователь, выполняющий задания агента SQL, имеет полный доступ к другому серверу. Это администратор на обоих серверах.

Проблема в том, что этот оператор не выполняется (имеет правильное имя сервера):

ВЫПОЛНИТЬ master.dbo.xp_create_subdir N '\\ ServerName \ C $ \ SqlServerBackup \ Test'

Я получаю ошибку: Сообщение 22048, уровень 16, состояние 1, строка 0 xp_create_subdir () вернул ошибку 123, «Неверный синтаксис имени файла, имени каталога или метки тома».

Кто-нибудь знает, в чем может быть проблема?

Ответы [ 7 ]

23 голосов
/ 15 мая 2009

После того, как я сам решил эту проблему, и ни одно из вышеперечисленных решений не было достаточно ясным, я решил опубликовать более четкий ответ. Ошибка на самом деле не имеет ничего общего с синтаксисом - это полностью связано с разрешениями. Здесь важно то, что учетная запись службы SQL Server, а не учетная запись агента SQL Server, пытается войти в систему, чтобы создать каталог. Вы можете проверить программу просмотра событий на целевом сервере и просмотреть журнал безопасности, чтобы увидеть неудачные входы в систему с учетной записи SQL Server на другом компьютере (мой работал как локальный администратор).

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

3 голосов
/ 17 ноября 2009

Агент SQL фактически не выполняет резервное копирование, он способен выполнять команды в SQL Server, который выполняет резервное копирование. Поэтому учетная запись службы SQL Server должна иметь разрешения для общего ресурса UNC.

Однако, я думаю, что есть проблема с процедурой xp_create_subdir. Я собираюсь прекратить использовать планы обслуживания, потому что время от времени я получаю ту же самую ошибку. Никакие разрешения не меняются, и это «обычно» работает, но «обычно» не сокращает его.

2 голосов
/ 14 сентября 2011

Я видел эту ошибку в истории плана обслуживания.

Ошибка операционной системы 3 (система не может найти указанный путь.). BACKUP DATABASE завершается ненормально. ". Возможные причины сбоя: Проблемы с запросом, свойство ResultSet установлено неправильно, параметры установлены неправильно или соединение установлено неправильно.

Я попытался запустить первый этап резервного копирования, где он создавал каталог на общей папке. Я получил ошибку "Отказано в доступе".

Наконец, я дал полные разрешения учетной записи службы, под которой запускается агент SQL, и план обслуживания успешно выполняется.

2 голосов
/ 24 февраля 2011

Если вы используете службу агента SQL Server и / или агента SQL Server как «LocalSystem», но не можете изменить учетные записи агента SQL Server и SQL Server на учетные записи домена, попробуйте следующее:

  1. Если вы используете учетную запись / учетные данные прокси-агента агента SQL Server для выполнения части задачи и резервного копирования с помощью агента SQL, в месте назначения резервной копии UNC под общим ресурсом и разрешениями NTFS предоставьте разрешения Full / Modify (соответственно) поскольку они действительно используются в какой-то момент в процессе установления соединений или, по крайней мере, в заданиях резервного копирования SQL, которые я пробовал (по крайней мере, в соответствии с журналами безопасности). К сожалению, либо нет способа, либо я не нашел способ выполнить определенные задачи службы SQL Server с помощью учетных записей прокси-серверов, которые можно выполнить с помощью задачи исключительно агента SQL (как отмечалось в предыдущих публикациях User55852 и ZaDDaZ).

  2. На целевом сервере резервного копирования UNC под общим ресурсом и разрешениями NTFS предоставьте разрешения Full / Modify (соответственно) учетной записи Компьютер сервера SQL (исходный сервер).


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

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

1 голос
/ 19 октября 2008

Проверьте, работает ли SqlAgent. Обычно это system \ NetworkService и у него нет прав доступа на других компьютерах.

Либо дайте временно права на запись всем пользователям на пути UNC, либо в Панели управления / Службы измените учетную запись, используемую для SqlAgent.

0 голосов
/ 20 октября 2008

Я делал резервные копии во многие времена UNC. Убедитесь, что это не проблема разрешений с учетной записью, под которой работают сервер SQL и агент SQL. Я бы не стал копировать эту скрытую админку, возможно, это проблема в $. Создайте общий ресурс и сделайте резервную копию. \ server \ share NOT \ server \ c $ \ folder

0 голосов
/ 19 октября 2008

Разве это не отсутствие двойной обратной косой черты перед именем сервера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...