Состояние настройки имени участника-службы

Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatusMonitor (UnitMonitor)

Этот монитор проверяет состояние настройки имени участника-службы экземпляра Microsoft® SQL Server™.

Knowledge Base article:

Сводка

Этот монитор проверяет конфигурацию имени участника-службы (SPN) экземпляра Microsoft® SQL Server™. Это выполняется путем сравнения конфигураций службы SQL Server и контроллера домена.

Причины

Имя участника-службы (SPN) для компонента SQL Server Database Engine отсутствует, перемещено или повторяется с другим именем участника-службы, настроенным в Active Directory домена.

Примечание. Перемещенное имя участника-службы — это имя участника-службы, настроенное для неправильно указанной учетной записи в Active directory.

Решения

Для устранения этой проблемы можно воспользоваться программами setspn.exe и klist.exe.

Обе эти программы поставляются в Windows Server 2008 и более поздних версиях. Для предыдущих версий Windows можно загрузить их отдельно в Центре загрузки Майкрософт или получить из пакета средств поддержки Windows.

Случай 1. Разрешение проблемы при отсутствии имени участника-службы.

1. Выполните следующую команду для добавления отсутствующего имени участника-службы:

setspn –A <SPN> <учетная_запись>

2. Выполните повторное подключение к SQL Server из клиентского приложения.

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

Примечание. Отсутствующее имя участника-службы не может привести к ошибке обмена данными, но не дает приложению использовать проверку подлинности Kerberos.

Случай 2. Разрешение проблемы при перемещенном имени участника-службы.

1. Выполните следующую команду, чтобы удалить перемещенное имя участника-службы:

setspn –D <SPN> <учетная_запись>

2. На клиентском компьютере либо выйдите из системы и войдите в нее снова, либо очистите кэш билетов Kerberos, выполнив следующую команду:

очистка klist

3. Выполните повторное подключение к SQL Server из клиентского приложения.

Примечание. Если требуется использование протокола Kerberos из приложения, необходимо настроить правильное имя участника-службы, используя приведенное выше решение для случая 1.

Случай 3. Разрешение проблемы при повторяющемся имени участника-службы.

1. Определите имена участников-служб, которые имеют дубликаты и должны быть удалены.

2. Выполните следующую команду, чтобы удалить каждое из повторяющихся имен участников-служб:

setspn –D <SPN> <учетная_запись>

3. На клиентском компьютере либо выйдите из системы и войдите в нее снова, либо очистите кэш билетов Kerberos, выполнив следующую команду:

очистка klist

4. Выполните повторное подключение к SQL Server из клиентского приложения.

Внешнее

При неверной настройке имени участников-служб могут возникнуть проблемы с подключением к SQL Server

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
Parent MonitorSystem.Health.ConfigurationState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBEngine.Configuration.SPNStatus
RemotableTrue
AccessibilityPublic
Alert Message
SQL Server не может произвести проверку подлинности с помощью Kerberos, поскольку имя участника-службы отсутствует, перемещено или повторяется.


SQL Server не может произвести проверку подлинности с помощью Kerberos, поскольку имя участника-службы отсутствует, перемещено или повторяется.
Учетная запись службы. {0}
Отсутствуют имена участников-служб: {1}
Перемещенные имена участников-служб: {2}
Повторяющиеся имена участников-служб: {3}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatusMonitor" Accessibility="Public" Enabled="true" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatusMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/Account$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='MissingSpnList']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='MisplacedSpnList']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='DuplicateSpnList']$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Good" MonitorTypeStateID="Good" HealthState="Success"/>
<OperationalState ID="Bad" MonitorTypeStateID="Bad" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ComputerNetworkName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerNetworkName>
<NetbiosComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</InstanceName>
<Account>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/Account$</Account>
<ServiceName>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</ServiceName>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<SearchScope>LDAP</SearchScope>
</Configuration>
</UnitMonitor>