Estado de configuración del nombre principal de servicio

Microsoft.SQLServer.2014.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 de entidad de seguridad 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

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Habilitado

 

Genera alertas

 

Intervalo (segundos)

Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo.

900

Hora de sincronización

Hora de sincronización especificada en un formato de 24 horas. Se puede omitir.

 

Tiempo de espera (segundos)

Especifica el tiempo durante el que se puede ejecutar el flujo de trabajo antes de que se cierre y se marque como error.

300

Ámbito de búsqueda

Use la búsqueda LDAP cuando el ámbito de una búsqueda sea el dominio o una unidad organizativa. Cuando el ámbito de una búsqueda sea el bosque, la consulta se puede resolver dentro de cualquier partición mediante una búsqueda en un Catálogo global (GC). Lista de valores: LDAP GC

LDAP

Element properties:

TargetMicrosoft.SQLServer.2014.DBEngine
Parent MonitorSystem.Health.ConfigurationState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.DBEngine.Configuration.SPNStatus
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2014: 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.2014.DBEngine.Configuration.SPNStatusMonitor" Accessibility="Public" Enabled="true" Target="SQL2014Core!Microsoft.SQLServer.2014.DBEngine" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.DBEngine.Configuration.SPNStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.DBEngine.Configuration.SPNStatusMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.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="SQL2014Core!Microsoft.SQLServer.2014.ServerRole"]/InstanceName$</InstanceName>
<Account>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/Account$</Account>
<ServiceName>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$</ServiceName>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<SearchScope>LDAP</SearchScope>
</Configuration>
</UnitMonitor>