Este monitor verifica o status da configuração do Nome da Entidade de Serviço da instância do Microsoft® SQL Server™.
Este monitor verifica a configuração do Nome da Entidade de Serviço (SPN) da instância do Microsoft® SQL Server™. Isso é feito com a comparação das configurações de serviço do SQL Server e do Controlador de Domínio.
Um Nome de Entidade de Serviço (SPN) para o Mecanismo de Banco de Dados SQL Server pode estar faltando, no local errado ou é uma duplicata de outros SPNs configurados no Ative Directory do domínio.
Observação: um SPN no local errado é um SPN configurado na conta incorreta no Active Directory.
Os programas setspn.exe e klist.exe podem ser usados para resolver o problema.
Ambas as ferramentas são fornecidas com o Windows Server 2008 e versões posteriores. Para versões anteriores do Windows, você pode precisar baixá-las separadamente do Centro de Download da Microsoft ou obtê-las do pacote das Ferramentas de Suporte do Windows.
Caso 1: Como resolver um SPN ausente:
1. Execute o seguinte comando para adicionar o SPN ausente:
setspn –A <SPN> <Account>
2. Tente reconectar-se ao SQL Server com o aplicativo cliente.
Como alternativa, você pode fornecer as permissões adequadas para a Conta de Serviço do SQL para permitir que o SQL gere automaticamente os SPNs necessários.
Observação: um SPN ausente talvez não resulte em uma falha de conectividade, mas impedirá que o aplicativo use a autenticação Kerberos.
Caso 2: Como resolver um SPN no local incorreto:
1. Execute o seguinte comando para remover o SPN do local errado:
setspn –D <SPN> <Account>
2. No computador cliente, faça logoff e logon novamente ou limpe o cache de tíquete Kerberos executando o seguinte comando:
limpar klist
3. Tente reconectar-se ao SQL Server com o aplicativo cliente.
Observação: se você quiser usar Kerberos de seu aplicativo, será necessário configurar o SPN correto usando a resolução do Caso 1 acima.
Caso 3: Como resolver um SPN duplicado:
1. Identifique os SPNs que estão duplicados e devem ser removidos.
2. Execute o seguinte comando para remover cada um dos SPNs duplicados:
setspn –D <SPN> <Account>
3. No computador cliente, faça logoff e logon novamente ou limpe o cache de tíquete Kerberos executando o seguinte comando:
limpar klist
4. Tente reconectar-se ao SQL Server com o aplicativo cliente.
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>