Изменение сервисной учетной записи для MS SQL Server 2012 и последующие трудности

Изменение сервисной учетной записи для MS SQL Server 2012 и последующие трудности

Предположим, что вам необходимо изменить учетную запись для службы MS SQL Server 2012. Раньше она была - System, а теперь надо работать под доменной учетной записью.

Сама процедура смены учетной записи несложная. Лучше всего запустить Sql Server Configuration Manager и в разделе SQL Server Services изменить необходимую службу.

Изменение сервисной учетной записи для MS SQL Server 2012

Возникающие проблемы после изменения сервисной учетной записи для SQL Server 2012.

Проблема №1.

Но после этого, скорее всего вы столкнетесь с проблемой, когда не сможете использовать доменные учетные записи для удаленного логина на SQL-сервер. При этом, локально авторизоваться (я имею ввиду - зайти через Management Studio c самого сервера) - без проблем.

Причина в том, что SPN-запись в домене Active Directory, указывающая на сервер, будет все еще "привязана" к учетной записи компьютера (System). Вообще говоря, SQL-сервер пытается автоматически при каждой загрузке перерегистрировать SPN для себя в домене. Но в данном случае он не сможет этого сделать, и в логе SQL-сервера (не в Event Log операционной системы) вы увидите вот такие две ошибки:

The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/alwayson-tst-1.domain.local:1433 ] for the SQL Server service. Windows return code: 0x2098, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.

The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/alwayson-tst-1.domain.local ] for the SQL Server service. Windows return code: 0x2098, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.

 ОК, это не большая беда. Идем в оснастку ADSI Edit, ищем нашу учетную запись, под которой запускается служба SQL-сервера, открываем свойства и идем на вкладку Security. Далее - кнопка Advanced. Выбираем любую запись ACL, в которой Principal - SELF, а Applies to - This object only.

Выставляем следующие разрешения и применяем их:

  • Read servicePrincipalName
  • Write servicePrincipalName

 И перезапускаем службу SQL-сервера.

Проблема №2.

К сожалению, после выставления разрешений для учетной записи в Active Directory, есть вероятность (т.е., необязательно), что удаленный вход на SQL-сервер все еще не работает, а ошибка в логах изменилась вот на такую:

The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/alwayson-tst-2.domain.local:1433 ] for the SQL Server service. Windows return code: 0x21c7, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.

The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/alwayson-tst-2.domain.local ] for the SQL Server service. Windows return code: 0x21c7, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.

Ошибка 0x21c7 означает, что значение для SPN-записи не уникально в пределах леса AD. Т.е. значение, которое SQL-сервер пытается прописать, уже где-то есть. Скорее всего, оно прописано у учетной записи компьютера.

Ошибка 0x21c7 - уникальность в пределах леса Active Directory

 

Поэтому идем на контроллер домена и пытаемся посмотреть:

C:\Users\user>setspn -l alwayson-tst-2
Registered ServicePrincipalNames for CN=ALWAYSON-TST-2,CN=Computers,DC=domain,DC=local:
        MSSQLSvc/alwayson-tst-2.domain.local
        MSSQLSvc/alwayson-tst-2.domain.local:1433
        MSServerClusterMgmtAPI/ALWAYSON-TST-2
        MSServerClusterMgmtAPI/alwayson-tst-2.domain.local
        TERMSRV/ALWAYSON-TST-2
        TERMSRV/alwayson-tst-2.domain.local
        WSMAN/alwayson-tst-2
        WSMAN/alwayson-tst-2.domain.local
        RestrictedKrbHost/ALWAYSON-TST-2
        HOST/ALWAYSON-TST-2
        RestrictedKrbHost/alwayson-tst-2.domain.local
        HOST/alwayson-tst-2.domain.local

 

Действительно, записи существуют. Надо их удалить:

C:\Users\user>setspn -d MSSQLSvc/alwayson-tst-2.domain.local  alwayson-tst-2

Unregistering ServicePrincipalNames for CN=ALWAYSON-TST-2,CN=Computers,DC=domain,DC=local
        MSSQLSvc/alwayson-tst-2.domain.local
Updated object

C:\Users\user>setspn -d MSSQLSvc/alwayson-tst-2.domain.local:1433  alwayson-tst-2
Unregistering ServicePrincipalNames for CN=ALWAYSON-TST-2,CN=Computers,DC=domain,DC=local
        MSSQLSvc/alwayson-tst-2.domain.local:1433
Updated object

C:\Users\user>setspn -l alwayson-tst-2
Registered ServicePrincipalNames for CN=ALWAYSON-TST-2,CN=Computers,DC=domain,DC=local:
        MSServerClusterMgmtAPI/ALWAYSON-TST-2
        MSServerClusterMgmtAPI/alwayson-tst-2.domain.local
        TERMSRV/ALWAYSON-TST-2
        TERMSRV/alwayson-tst-2.domain.local
        WSMAN/alwayson-tst-2
        WSMAN/alwayson-tst-2.domain.local
        RestrictedKrbHost/ALWAYSON-TST-2
        HOST/ALWAYSON-TST-2
        RestrictedKrbHost/alwayson-tst-2.domain.local
        HOST/alwayson-tst-2.domain.local

Как видно, лишние записи удалены, теперь можно попытаться перезагрузить сервер и посмотреть в логах, что будет:

The SQL Server Network Interface library successfully registered the Service Principal Name (SPN) [ MSSQLSvc/alwayson-tst-1.domain.local:1433 ] for the SQL Server service.

The SQL Server Network Interface library successfully registered the Service Principal Name (SPN) [ MSSQLSvc/alwayson-tst-1.domain.local ] for the SQL Server service.

 

Теперь и удаленная авторизация тоже будет работать.

 

Метки: ms sql server (ru), sql 2012 (ru)

ПечатьE-mail

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


Защитный код
Обновить