Este monitor comprueba el estado de la configuración de nombre principal de servicio de la instancia de Microsoft® SQL Server™.
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.
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.
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.
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>