Вопрос или проблема
Я пытаюсь запустить задачу SQL Server каждый вечер, но получаю ошибку.
выполнено от имени пользователя: NT SERVICE\SQLSERVERAGENT. Ошибка входа для пользователя 'SERVER\INSTANCE$'. [SQLSTATE 28000] (Ошибка 18456)
Задача настроена для выполнения хранимой процедуры, которая ссылается на данные с другого сервера. Очевидно, вход не удается, но я не понимаю, потому что на обоих серверах настроен пользователь NT SERVER\SQLSERVERAGENT
. Почему сервер пытается использовать пользователя ‘SERVER\INSTANCE$
‘ (настоящее имя ошибки содержит имя сервера/экземпляра хранимой процедуры)? Я думал, что задачи SQL Server используют учетную запись агента задач для выполнения операций на других серверах. Версия SQL Server – SQL Server 2012.
Какие могут быть потенциальные решения этой проблемы?
“NT SERVER\SQLSERVERAGENT” – это ЛОКАЛЬНАЯ учетная запись. Поскольку вы подключаетесь к удаленной машине, учетная запись отличается. SQL Server Agent, работая под ЛОКАЛЬНОЙ учетной записью, не будет иметь доступа к удаленному серверу базы данных.
Рекомендуемый способ решения этой проблемы – настроить учетную запись службы в AD и настроить службу на запуск под этой учетной записью AD. Учетные записи AD общие между серверами, поэтому если вы дадите разрешение “Domain\SQLAgent” (например) на сервере A и сервере B, это сработает.
Любые учетные записи “NT SERVER*” не будут работать для вас, так как они локальны для одной машины, даже если вы создадите идентичную учетную запись на второй машине.
Ответ или решение
Ваша проблема с выполнением задачи SQL Server заключается в ошибке «Login failed for user ‘SERVER\INSTANCE$’» и вызвана недостатками в настройках учетных записей для обеспечения доступа к удаленному серверу. Давайте разберем детали и предложим возможные решения.
Проблема
Согласно вашему описанию, задача SQL Server настроена на выполнение хранимой процедуры, которая обращается к данным на другом сервере. Из сообщения об ошибке видно, что служба SQL Server Agent пытается использовать учетную запись SERVER\INSTANCE$
, на которой доступ к удаленному серверу не настроен должным образом. Вероятно, вы предполагали, что учетная запись агента SQL Server (NT SERVICE\SQLSERVERAGENT
) сможет выполнить операцию на удаленном сервере, поскольку аналогичная учетная запись существует на обоих серверах.
Тем не менее, учтите, что локальные учетные записи, такие как NT SERVICE\SQLSERVERAGENT
, не имеют доступа к ресурсам других серверов. Это связано с тем, что такие учетные записи ограничены локальным компьютером, и их права не распространяются на другие машины в сети.
Рекомендованное Решение
Наилучший способ решения данной проблемы заключается в следующем:
-
Создание учетной записи службы в Active Directory (AD):
- Создайте службу учетной записи в вашем домене. Например, вы можете создать учетную запись
Domain\SQLAgent
.
- Создайте службу учетной записи в вашем домене. Например, вы можете создать учетную запись
-
Настройка службы SQL Server Agent:
- Измените настройки службы SQL Server Agent, чтобы она запускалась под созданной учетной записью службы AD. Для этого вам нужно:
- Открыть
Службы Windows
. - Найти службу SQL Server Agent.
- Щелкнуть правой кнопкой мыши и выбрать
Свойства
. - Перейти на вкладку
Вход в систему
и указать учетную запись домена и пароль.
- Открыть
- Измените настройки службы SQL Server Agent, чтобы она запускалась под созданной учетной записью службы AD. Для этого вам нужно:
-
Настройка прав доступа:
- Убедитесь, что созданная учетная запись
Domain\SQLAgent
имеет необходимые права как на локальном сервере, так и на удаленном сервере. Вам следует предоставить этому пользователю права на выполнение хранимых процедур и доступ к нужным базам данных.
- Убедитесь, что созданная учетная запись
Дополнительные рекомендации
-
Проверка конфигурации Linked Server: Если ваша задача включает в себя использование Linked Server, убедитесь, что соответствующе настроены параметры безопасности для этой связки, позволяя учетной записи, под которой работает SQL Server Agent, выполнять нужные запросы.
-
Логирование и мониторинг: Включите более детальное логирование для задач SQL Server и SQL Server Agent, чтобы в будущем проще определять источники проблем.
Следуя приведенным выше рекомендациям, вы сможете устранить возникшую проблему и наладить стабильное выполнение задач SQL Server с необходимым доступом к удалённым данным.