Не удалось назначить SPN учетной записи, ошибка 0x21c7/8647

SQL logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами произвели установку Microsoft SQL Server 2019. Двигаемся дальше, и сегодня то же поговорим на тему сиквела, точнее ошибок связанного с ним и AD. При попытке добавить новую SPN запись, у меня появилась ошибка "Не удалось назначить SPN учетной записи, ошибка 0x21c7/8647", давайте посмотрим, где искать описание ошибки, что является основной причиной и как ее полностью устранить.

Описание ошибки 0x21c7/8647

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

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

Потребовалось мне прописать для одного виртуального сервера SPN запись, как это делать я уже подробно рассказывал. Вместо привычного успешного завершения, я получил вот такую ошибку:

Регистрация ServicePrincipalNames для CN=run-t,OU=Run-users,DC=Pyatilistnik,DC=org
MSSQLSvc/SVTA.Pyatilistni.org
Не удалось назначить SPN учетной записи "CN=run-t,OU=Run-users,DC=Pyatilistnik,DC=org", ошибка 0x21c7/8647 -> Не удалось выполнить операцию, так как значение имени субъекта-службы, предоставленное для добавления или изменения, не является уникальным в пределах леса.

Не удалось назначить SPN учетной записи

Failed to assign SPN on account 'CN=run-t,OU=Run-users,DC=Pyatilistnik,DC=org', error 0x21c7/8647 -> The operation failed because SPN value provided for addition/modification is not unique forest-wide.

Failed to assign SPN on account

Если попытаться добавить SPN в ручную через оснастку "Active Directory - Пользователи и компьютеры" или через ADSIedit, то ошибка воспроизведется.

Ошибка операции. Код ошибки: 0x21c7. Не удалось выполнить операцию, так как значение имени субъекта-службы, представленное для добавления или изменения, не является уникальным в пределах леса.

Ошибка операции. Код ошибки: 0x21c7. Не удалось выполнить операцию, так как значение имени субъекта-службы, представленное для добавления или изменения, не является уникальным в пределах леса.

Еще данная ситуация может легко появляться, когда вы произвели миграцию компьютера из одного домена в другой, или же произвели восстановление объекта Active Directory из корзины, например такой восстановленный объект вызывал ошибку дублирования SPN ID 11.

Устранение ошибки дублирования SPN

Вообще это нормальное поведение, что служба каталогов Active Directory производит проверку одинаковых SPN, но возможность отключения такого поведения все же есть. Первое, что вы должны сделать, это зайти на любой из контроллеров домена, которые отвечают за домен, где располагается сервер у которого есть дубль SPN. Откройте оснастку просмотр событий или же можете воспользоваться утилитой Windows Admin Center, это не принципиально. Найдите там журнал "ActiveDirectory_DomainService". В этом журнале поищите событие с кодом ID 2974.

The attribute value provided is not unique in the forest or partition. Attribute: servicePrincipalName Value=MSSQLSvc/SVTA.Pyatilistnik.org
CN=СИНИНТ,OU=Technical,DC=root,DC=Pyatilistnik,DC=org Winerror: 8647

ID 2974 The attribute value provided is not unique in the forest or partition

ID 2974 The attribute value provided is not unique in the forest or partition

Так же найти все SPN для нужного объекта можно через команду:

dsquery * -filter servicePrincipalName=* | findstr имя объекта

Из ошибки ID 2974, мы видим, где именно уже прописан наш SPN, это учетная запись пользователя СИНИНТ. Давайте зайдем в ее свойства и удалим их.

Удаление SPN записи

Далее попробуем заново зарегистрировать SPN записи:

setspn.exe -a MSSQLSvc/SVT.Pyatilistnik.org PYATILISTNIK\run-t
setspn.exe -a MSSQLSvc/SVT.Pyatilistnik.org:1433 PYATILISTNIK\run-t

Теперь все прошло штатно и без проблем "Регистрация ServicePrincipalNames" выполнена и объект добавлен.

Успешная регистрация SPN записи

На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *