SQL Server Job – Не удалось войти в систему для пользователя

Вопрос или проблема

Я пытаюсь запустить задачу 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, не имеют доступа к ресурсам других серверов. Это связано с тем, что такие учетные записи ограничены локальным компьютером, и их права не распространяются на другие машины в сети.

Рекомендованное Решение

Наилучший способ решения данной проблемы заключается в следующем:

  1. Создание учетной записи службы в Active Directory (AD):

    • Создайте службу учетной записи в вашем домене. Например, вы можете создать учетную запись Domain\SQLAgent.
  2. Настройка службы SQL Server Agent:

    • Измените настройки службы SQL Server Agent, чтобы она запускалась под созданной учетной записью службы AD. Для этого вам нужно:
      • Открыть Службы Windows.
      • Найти службу SQL Server Agent.
      • Щелкнуть правой кнопкой мыши и выбрать Свойства.
      • Перейти на вкладку Вход в систему и указать учетную запись домена и пароль.
  3. Настройка прав доступа:

    • Убедитесь, что созданная учетная запись Domain\SQLAgent имеет необходимые права как на локальном сервере, так и на удаленном сервере. Вам следует предоставить этому пользователю права на выполнение хранимых процедур и доступ к нужным базам данных.

Дополнительные рекомендации

  • Проверка конфигурации Linked Server: Если ваша задача включает в себя использование Linked Server, убедитесь, что соответствующе настроены параметры безопасности для этой связки, позволяя учетной записи, под которой работает SQL Server Agent, выполнять нужные запросы.

  • Логирование и мониторинг: Включите более детальное логирование для задач SQL Server и SQL Server Agent, чтобы в будущем проще определять источники проблем.

Следуя приведенным выше рекомендациям, вы сможете устранить возникшую проблему и наладить стабильное выполнение задач SQL Server с необходимым доступом к удалённым данным.

Оцените материал
Добавить комментарий

Капча загружается...