Этот монитор проверяет состояние настройки имени участника-службы экземпляра Microsoft® SQL Server™.
Этот монитор проверяет конфигурацию имени субъекта-службы (SPN) экземпляра Microsoft® SQL Server™. Проверка выполняется путем сравнения конфигураций службы SQL Server и контроллера домена.
Note that the monitor is always in "Healthy" state for non-domain joined machines.
Имя участника-службы (SPN) для компонента SQL Server Database Engine отсутствует, перемещено или повторяется с другим именем участника-службы, настроенным в Active Directory домена.
Примечание. Перемещенное имя участника-службы — это имя участника-службы, настроенное для неправильно указанной учетной записи в Active directory.
Для устранения этой проблемы можно воспользоваться программами setspn.exe и klist.exe.
Обе эти программы поставляются в Windows Server 2008 и более поздних версиях. Для предыдущих версий Windows можно загрузить их отдельно в Центре загрузки Майкрософт или получить из пакета средств поддержки Windows.
Случай 1. Разрешение проблемы при отсутствии имени участника-службы.
1. Выполните следующую команду для добавления отсутствующего имени субъекта-службы:
setspn –S <имя_субъекта-службы> <учетная_запись>
2. Выполните повторное подключение к SQL Server из клиентского приложения.
Также можно использовать параметр /S или –A для команды setspn. Хотя последний параметр считается устаревшим, он продолжает работать в старых версиях Windows Server (2012, 2012 R2).
Обратите внимание, что при использовании виртуальной учетной записи (например, Local System или NT Service\MSSQL Server) значение <учетная запись> для команды setspn должно содержаться в имени узла компьютера.
Кроме того, можно предоставить необходимые разрешения учетной записи службы SQL, чтобы разрешить SQL автоматически формировать нужные имена участников-служб.
Примечание. Отсутствующее имя субъекта-службы может не привести к ошибке обмена данными, но не дает приложению использовать проверку подлинности Kerberos.
Случай 2. Разрешение проблемы при перемещенном имени субъекта-службы:
1. Выполните следующую команду для удаления перемещенного имени субъекта-службы SPN:
setspn –D <SPN> <учетная_запись>
2. На клиентском компьютере либо выйдите из системы и войдите снова, либо сбросьте кэш билетов Kerberos, выполнив следующую команду:
очистка klist
3. Попробуйте повторно подключиться к SQL Server из клиентского приложения.
Примечание. Если вы хотите использовать протокол Kerberos из приложения, необходимо настроить правильное имя субъекта-службы, используя приведенное выше решение для случая 1.
Случай 3. Разрешение проблемы при повторяющемся имени субъекта-службы:
1. Определите SPN, которые дублируются и должны быть удалены.
2. Выполните следующую команду, чтобы удалить все дублирующиеся имена служб-участников:
setspn –D <SPN> <учетная_запись>
3. На клиентском компьютере либо выйдите из системы и войдите снова, либо сбросьте кэш билетов Kerberos, выполнив следующую команду:
очистка klist
4. Попробуйте повторно подключиться к SQL Server из клиентского приложения.
При неверной настройке имени участников-служб могут возникнуть проблемы с подключением к SQL Server
Имя | Описание | Значение по умолчанию |
Приоритет предупреждения | Определяет приоритет предупреждения. | Обычные |
Серьезность предупреждения | Определяет серьезность предупреждения. | Предупреждение |
Включено | Включает или отключает рабочий процесс. | Да |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения. | Да |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 900 |
Область поиска | Используйте поиск LDAP, если областью поиска является домен или подразделение. Если областью поиска является лес, запрос можно разрешить в любой секции с использованием поиска в глобальном каталоге (GC). Список значений: LDAP GC. | LDAP |
Время синхронизации | Время синхронизации в 24-часовом формате. Может быть опущено. |
|
Время ожидания (секунды) | Задает допустимое время выполнения рабочего процесса, перед тем как он будет закрыт и отмечен как сбойный. | 300 |
Target | Microsoft.SQLServer.2012.DBEngine | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | AvailabilityHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2012.DBEngine.Configuration.SPNStatus | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2012.DBEngine.Configuration.SPNStatusMonitor" Accessibility="Public" Enabled="true" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.DBEngine.Configuration.SPNStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.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>