État de configuration de nom de principal du service

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

Cette analyse vérifie l'état de la configuration du nom de principal du service de l'instance Microsoft® SQL Server™.

Knowledge Base article:

Résumé

Cette analyse vérifie la configuration du nom de principal du service (SPN) de l'instance Microsoft® SQL Server™. Cette opération s'effectue en comparant la configuration du service SQL Server et celle du contrôleur de domaine.

Causes

Un nom de principal du service (SPN) pour le moteur de base de données de SQL Server peut être absent, mal placé ou bien dupliquer un autre SPN configuré dans l'environnement Active Directory du domaine.

Remarque : un SPN mal placé est un SPN qui est configuré sur le compte incorrect dans Active Directory.

Solutions

Les programmes setspn.exe et klist.exe peuvent être utilisés pour résoudre le problème.

Ces deux outils sont fournis avec Windows Server 2008 et versions ultérieures. Concernant les versions antérieures de Windows, vous devrez peut-être télécharger ces composants séparément du Centre de téléchargement Microsoft ou vous les procurer dans le package d'outils de support de Windows.

Cas 1 : procédure pour résoudre un nom SPN manquant :

1. Exécutez la commande suivante pour ajouter le nom SPN manquant :

setspn –A <Compte> <SPN>

2. Essayez de rétablir la connexion à SQL Server avec votre application cliente.

Vous pouvez également fournir les autorisations appropriées au compte de service SQL pour que SQL génère automatiquement les noms SPN nécessaires.

Remarque : l'absence de SPN ne peut pas entraîner un échec de connectivité, mais empêche l'application d'utiliser l'authentification Kerberos.

Cas 2 : procédure pour résoudre un nom SPN mal placé :

1. Exécutez la commande suivante pour supprimer le SPN mal placé :

setspn –D <Compte> <SPN>

2. Sur l'ordinateur client, fermez, puis rouvrez une session, ou effacez le cache de ticket Kerberos en exécutant la commande suivante :

klist purge

3. Essayez de rétablir la connexion à SQL Server avec votre application cliente.

Remarque : si vous souhaitez utiliser Kerberos depuis votre application, vous devez configurer le nom SPN correct en vous aidant de la résolution du cas 1 ci-dessus.

Cas 3 : procédure pour résoudre un nom SPN dupliqué :

1. Identifiez les SPN qui sont en double et doivent être supprimés.

2. Exécutez la commande suivante pour supprimer tous les noms SPN dupliqués :

setspn –D <Compte> <SPN>

3. Sur l'ordinateur client, fermez, puis rouvrez une session, ou effacez le cache de ticket Kerberos en exécutant la commande suivante :

klist purge

4. Essayez de rétablir la connexion à SQL Server avec votre application cliente.

Externe

Vous pouvez rencontrer des problèmes de connectivité à SQL Server si le nom SPN est mal configuré

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
Parent MonitorSystem.Health.ConfigurationState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBEngine.Configuration.SPNStatus
RemotableTrue
AccessibilityPublic
Alert Message
SQL Server ne peut pas utiliser l'authentification Kerberos car le nom de principal du service (SPN) est manquant, mal placé ou dupliqué.


SQL Server ne peut pas utiliser l'authentification Kerberos car le nom de principal du service (SPN) est manquant, mal placé ou dupliqué.
Compte de service : {0}
SPN manquants : {1}
SPN mal placés : {2}
SPN dupliqués : {3}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatusMonitor" Accessibility="Public" Enabled="true" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.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>