Erreur: impossible de générer le contexte SSPI


8

Lorsque quelqu'un essaie de se connecter à une instance SQL Server, l'erreur s'affiche:

Il n'est pas possible de générer un contexte SSPI.

Hier, nous avons eu une panne de courant (je ne sais pas comment dire cette expression en anglais) et j'ai dû fermer nos serveurs.

À la recherche de réponses, j'ai trouvé ceci:

Problème de connectivité SQL Server 2008: impossible de générer le contexte SSPI

Mais cela ne m'aide pas, car ils fonctionnent bien jusqu'à hier. Je ne veux rien changer. Mais si c'est nécessaire, je vais le changer.

Obs: je ne peux pas redémarrer le serveur maintenant.


Edit: Depuis ma réponse, nous n'avons eu aucune erreur.


Je ne peux pas redémarrer le serveur, nous avons plus de 500+ utilisateurs en ligne. Je ne sais vraiment pas quoi faire. Il n'y a rien d'utile sur Internet.
Racer SQL

1
Définissez la stratégie de groupe à partir du serveur lui-même pour modifier automatiquement l'heure des utilisateurs. Si vous ne souhaitez pas redémarrer le serveur pour forcer les modifications de la stratégie de groupe que vous pouvez utiliser gpupdate /force. Plus sur ce beau sujet ici Mais je recommanderais fortement que cette tâche soit confiée au gestionnaire de serveur.
Nelz

Réponses:


14

«Impossible de générer le contexte SSPI» est une erreur générique. Cela peut être dû à de nombreux problèmes, comme un mot de passe obsolète, une dérive de l'horloge, des autorisations d'accès à Active Directory, l'échec de l'enregistrement d'un SPN, etc.

Il n'y a pas de solution à ce problème. La seule «solution» consiste à rechercher la cause, conformément à KB811889 et / ou à la résolution des erreurs Kerberos . L'application d'une solution ou d'une autre à partir de ressources Internet aléatoires, sans comprendre la cause, peut ou peut ne pas résoudre le problème, peut ou peut ne pas provoquer de frustration, peut ou peut ne pas causer de dommages irrévocables.


2
Réponse-> L'application d'une solution ou d'une autre à partir de ressources Internet aléatoires, sans comprendre la cause, peut ou peut ne pas résoudre le problème, peut ou peut ne pas provoquer de frustration, peut ou peut ne pas causer de dommages irrévocables. Réponse -> "Nous avons changé l'utilisateur SQL SERVICE en un utilisateur qui est" Administrateur de domaine "." -ooooo-kaay alors.
matao

3

Nous avons changé SQL SERVICE usercelui qui est " Domain Admin".

J'ai fait quelques recherches pour savoir pourquoi cela se produit. Il indique que lorsque vous arrêtez le service, vous avez besoin d'un compte avec des privilèges pour créer un nouveau SPN (quand il se rallume). Si vous démarrez un service sans lui, il s'affichera dans CANNOT GENERATE SSPI CONTEXT.

nous modifions les privilèges de notre compte système.

J'espère que cela aide quelqu'un.


8
La bonne pratique pour les comptes de service est de leur accorder le moins de privilèges possible. Donner à votre administrateur de domaine de compte de service est le contraire de cette approche - je déconseille fortement de le faire, d'un point de vue de la sécurité.
Mike

2

Nous avons eu ce problème après avoir pris une base de données de PROD et l'avons restaurée dans QA. Notre application a appelé trois bases de données sur trois serveurs et à part cela, ce n'était pas compliqué.

Il s'avère qu'un SPN (nom principal du service) parasite gênait le compte de service sous lequel la connexion aurait dû être exécutée. Nous l'avons découvert à l'aide du programme Program Files> Microsoft Kerberos Config Manager.

Le correctif à court terme consistait à utiliser SQL Server Configuration Manager et à modifier les connexions SQL Server et SQL Server Agent du compte de service à «LocalSystem» sous «Utiliser le compte intégré».


1

Impossible de générer un contexte SSPI peut signifier exactement cela. Lorsqu'un client se connecte à un serveur SQL, il utilise une méthode de génération qui inclut le nom de domaine complet du serveur (MsSQLsvr) et le port. Il utilise DNS pour générer le nom du serveur, donc s'il résout le nom incorrectement en raison de CNAME ou d'un fichier hôte, etc., la génération échouera. Envoyez un ping au serveur souhaité et voyez quelle réponse vous obtenez. S'il ne s'agit pas du nom de domaine complet du serveur SQL, le SPN sera généré de manière incorrecte, provoquant cette erreur.


1

Dans certaines situations, vous obtiendrez cette erreur en raison des paramètres SPN. Par exemple, si vous effectuez des tests de récupération après sinistre sur un nouveau serveur, vous pouvez obtenir une erreur SSPI lors de la connexion à SQL Server. Encore plus étrange, vous pouvez vous connecter à l'aide de SQL Server Management Studio, mais vous ne pouvez pas vous connecter via ODBC ou OLEDB. Il peut y avoir une solution temporaire qui vous permettra probablement d'accéder à la base de données.

Solution : sur chaque ordinateur client essayant de se connecter à SQL Server, créez une entrée dans le fichier hôte de chaque poste de travail. Le mécanisme exact utilisé pour résoudre le problème n'est pas confirmé, mais il se peut que son utilisation l'emporte sur la nécessité du SPN.

Bien que cela ne soit pas garanti pour être corrigé dans tous les cas, cela vous permettra probablement de vous remettre en marche. Cela ne doit pas être considéré comme un correctif permanent. Vous devez résoudre le SPN ou d'autres problèmes dans une situation idéale. Cependant, si vous rencontrez des problèmes avec d'anciennes machines Windows exécutant un système d'exploitation non pris en charge ou si vous effectuez simplement des tests de reprise après sinistre de preuve de concept, cela devrait vous permettre de rester là où vous devez être pour garder les lumières allumées ou la production de nouveau opérationnelle.


Je veux simplement répéter qu'il s'agit d'une solution de contournement. Les solutions de contournement ne sont pas des correctifs permanents. Si vous souhaitez causer moins de problèmes à l'avenir, vous devez résoudre le problème sous-jacent qui, selon mon expérience, concerne les SPN.
Jason Geiger

Une entrée mappant le nom de la machine sur l'IP de la machine?
Bill Greer

1

J'ai rencontré ce problème et il a été résolu en supprimant l'entrée SPN dans les attributs du compte d'ordinateur dans AD pour le serveur

Rechercher le compte d'ordinateur dans Utilisateurs et ordinateurs AD (vue avancée)

entrez la description de l'image ici

Supprimez ensuite les deux entrées dans servicePrincipalName pour MSSQLSvc

entrez la description de l'image ici


0

J'ai eu un problème similaire. J'ai fini par devoir supprimer les entrées des informations SPN sur le compte d'ordinateur dans ADSIEdit.

Après avoir supprimé les entrées, j'ai redémarré le service SQL et il a enregistré le SPN avec le compte de ressource de domaine que j'avais créé. J'ai ensuite pu accéder à SQL Server à distance.


0

Pour moi, la solution était d'exécuter SQL Studio en tant qu'utilisateur de domaine avec cette commande:

runas / user: OtherDomain \ User SSMS.exe


0

J'ai récemment rencontré ce problème. J'exécutais en tant que compte NT SERVICE et lorsque je suis passé à l'utilisation d'un compte de service, je ne pouvais plus me connecter à l'aide de SSMS avec le nom de la machine ou le FQDN. J'ai pu me connecter avec l'adresse IP. Après quelques recherches, j'ai trouvé que le SPN dans Active Directory pour l'instance SQL était enregistré sur la machine. Une fois que j'ai supprimé cela, que je l'ai ajouté au compte de service et que j'ai redémarré la machine SQL, tout a fonctionné comme il se doit. Heureux de fournir plus de détails si nécessaire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.