Estado de configuración del nombre principal de servicio

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

Este monitor comprueba el estado de la configuración de nombre principal de servicio de la instancia de Microsoft® SQL Server™.

Knowledge Base article:

Resumen

Este monitor comprueba la configuración de nombre principal de servicio (SPN) de la instancia de Microsoft® SQL Server™. Para ello se comparan las configuraciones del servicio SQL Server y del controlador de dominio.

Causas

Un nombre principal de servicio (SPN) para el motor de base de datos de SQL Server puede faltar, estar ubicado incorrectamente o estar duplicado en otros SPN configurados en Active Directory del dominio.

Nota: un SPN ubicado incorrectamente es un SPN configurado en una cuenta incorrecta en Active Directory.

Soluciones

Los programas setspn.exe y klist.exe se pueden usar para solucionar el problema.

Ambas herramientas se incluyen con Windows Server 2008 y versiones posteriores. Para las versiones anteriores de Windows, puede ser necesario descargarlas por separado desde el Centro de descarga de Microsoft u obtenerlas del paquete de herramientas de soporte técnico de Windows.

Caso 1: Cómo resolver un SPN que falta:

1. Ejecute el comando siguiente para agregar el SPN que falta:

setspn –A <SPN> <Cuenta>

2. Intente volver a conectarse a SQL Server con la aplicación cliente.

Como alternativa, puede proporcionar los permisos adecuados a la cuenta de servicio de SQL para permitir que SQL genere automáticamente los SPN necesarios.

Nota: un SPN que falta puede no dar lugar a un error de conexión, pero impedirá que la aplicación utilice la autenticación Kerberos.

Caso 2: Cómo resolver un SPN ubicado incorrectamente:

1. Ejecute el siguiente comando para quitar el SPN ubicado incorrectamente:

setspn –D <SPN> <Cuenta>

2. En el equipo cliente, cierre la sesión y vuelva a iniciarla o desactive la caché del vale de Kerberos mediante el comando siguiente:

klist purge

3. Intente volver a conectarse a SQL Server con la aplicación cliente.

Nota: si desea usar Kerberos desde la aplicación, debe configurar el SPN correcto usando la solución del caso 1 anterior.

Caso 3: Cómo resolver un SPN duplicado:

1. Identifique los SPN que están duplicados y se deberían quitar.

2. Ejecute el siguiente comando para quitar cada uno de los SPN duplicados:

setspn –D <SPN> <Cuenta>

3. En el equipo cliente, cierre la sesión y vuelva a iniciarla o desactive la caché del vale de Kerberos mediante el comando siguiente:

klist purge

4. Intente volver a conectarse a SQL Server con la aplicación cliente.

Externo

Puede experimentar problemas de conectividad con SQL Server si los SPN no está configurado correctamente

Element properties:

TargetMicrosoft.SQLServer.2012.DBEngine
Parent MonitorSystem.Health.ConfigurationState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.DBEngine.Configuration.SPNStatus
RemotableTrue
AccessibilityPublic
Alert Message
SQL Server no puede autenticar con Kerberos porque el Nombre principal de servicio (SPN) falta, está ubicado incorrectamente o está duplicado.


SQL Server no puede autenticar con Kerberos porque el Nombre principal de servicio (SPN) falta, está ubicado incorrectamente o está duplicado.
Cuenta de servicio: {0}
SPN que faltan: {1}
SPN ubicados incorrectamente: {2}
SPN duplicados: {3}
RunAsDefault

Source Code:

<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>