Ce moniteur vérifie l'état de la configuration du nom de principal de service de l'instance Microsoft SQL Server.
Notez que le moniteur est toujours dans l'état « Sain » pour les ordinateurs qui ne sont pas joints à un domaine.
Ce moniteur 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. Seuls les modes de monitoring Agent local/Mixte sont disponibles.
Notez que le moniteur est toujours dans l'état « Sain » pour les ordinateurs qui ne sont pas joints à un domaine.
Un nom de principal du service (SPN) pour le moteur de base de données SQL Server est peut-être manquant, mal placé ou est un doublon d'autres SPN configurés dans l'annuaire Active Directory du domaine.
Remarque : Un SPN mal placé est un SPN configuré sur un compte inapproprié dans l'annuaire Active Directory.
Les programmes setspn.exe et klist.exe peuvent être utilisés pour résoudre le problème.
Les deux outils sont inclus dans Windows Server 2008 et versions ultérieures. Pour les versions précédentes de Windows, vous devez les télécharger séparément à partir du Centre de téléchargement Microsoft ou les obtenir à partir du 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 SPN manquant :
setspn –S <SPN> <Compte>
2. Essayez de rétablir la connexion à SQL Server avec votre application cliente.
Vous pouvez également utiliser le paramètre /S ou -A pour la commande setspn. Bien que ce dernier soit considéré comme déconseillé, il peut encore fonctionner dans les versions plus anciennes de Windows Server (2012, 2012 R2).
Si vous utilisez un compte virtuel (par exemple, un compte Système local ou Service NT\MSSQL Server), la valeur <Account> de la commande setspn doit être présentée par le nom d'hôte de l'ordinateur.
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 : Un SPN manquant peut ne pas entraîner un échec de connectivité, mais empêche l'application d'utiliser l'authentification Kerberos.
Cas 2 : Comment résoudre un 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 voulez utiliser Kerberos à partir de votre application, vous devez configurer le SPN correct en utilisant la résolution du cas 1 ci-dessus.
Cas 3 : Comment résoudre un SPN en doublon :
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.
Nom | Description | Valeur par défaut |
Priorité d'alerte | Définit la priorité de l'alerte. | Normale |
Gravité d'alerte | Définit la gravité de l'alerte. | Avertissement |
Activé | Active ou désactive le flux de travail. | Oui |
Génère des alertes | Définit si le flux de travail génère une alerte. | Oui |
Intervalle (en secondes) | Intervalle régulier (en secondes) auquel exécuter le flux de travail. | 900 |
Étendue de la recherche | Utilisez une recherche LDAP lorsque l'étendue de la recherche correspond à un domaine ou une unité organisationnelle. Lorsque l'étendue de la recherche correspond à la forêt, la requête peut être résolue au sein de toute partition, par une recherche dans le catalogue global (GC). Liste des valeurs : LDAP GC | LDAP |
Heure de synchronisation | Heure de la synchronisation spécifiée selon un format de 24 heures. Peut être omise. |
|
Délai d'expiration (secondes) | Spécifie la durée pendant laquelle le flux de travail est autorisé à s’exécuter avant d’être fermé et marqué comme ayant échoué. | 300 |
Target | Microsoft.SQLServer.Windows.LocalDBEngine | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | AvailabilityHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Windows.DBEngine.Configuration.SPNStatus | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Windows.DBEngine.Configuration.SPNStatusMonitor" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.LocalDBEngine" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.DBEngine.Configuration.SPNStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.DBEngine.Configuration.SPNStatusMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='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>
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<PrincipalName>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/PrincipalName$</PrincipalName>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<SearchScope>LDAP</SearchScope>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>