Fehler: SSPI-Kontext kann nicht generiert werden


8

Wenn jemand versucht, eine Verbindung zu einer SQL Server-Instanz herzustellen, wird folgender Fehler angezeigt:

Es ist nicht möglich, einen SSPI-Kontext zu generieren.

Gestern hatten wir einen Stromausfall (ich weiß nicht, wie ich diesen Ausdruck auf Englisch ausdrücken soll) und ich musste unsere Server herunterfahren.

Auf der Suche nach Antworten fand ich Folgendes:

Verbindungsproblem mit SQL Server 2008: SSPI-Kontext kann nicht generiert werden

Aber es hilft mir nicht, weil sie bis gestern gut funktionieren. Ich möchte nichts ändern. Aber wenn es sein muss, werde ich es ändern.

Obs: Ich kann den Server jetzt nicht neu starten.


Edit: Seit ich meine Antwort habe, haben wir keine Fehler gehabt.


Ich kann den Server nicht neu starten. Wir haben mehr als 500 Benutzer online. Ich kann wirklich nicht herausfinden, was ich tun soll. Im Internet gibt es nichts Nützliches.
Racer SQL

1
Legen Sie die Gruppenrichtlinie vom Server selbst fest, um die Zeit für die Benutzer automatisch zu ändern. Wenn Sie den Server nicht neu starten möchten, um die Änderungen in der Gruppenrichtlinie zu erzwingen, die Sie verwenden können gpupdate /force. Mehr zu diesem schönen Thema hier Aber ich würde empfehlen, diese Aufgabe dem Server-Manager zu übergeben.
Nelz

Antworten:


14

'SSPI-Kontext kann nicht generiert werden' ist ein generischer Fehler. Dies kann durch viele Probleme verursacht werden, z. B. durch ein überladenes Kennwort, Taktverschiebung, Active Directory-Zugriffsberechtigungen, Fehler beim Registrieren eines SPN usw.

Es gibt keine Lösung für dieses Problem. Die einzige "Lösung" besteht darin , die Ursache gemäß KB811889 und / oder Fehlerbehebung bei Kerberos-Fehlern zu untersuchen . Das Anwenden der einen oder anderen Lösung aus zufälligen Internetquellen, ohne die Ursache zu verstehen, kann das Problem lösen oder nicht, kann Frustration verursachen oder nicht, kann unwiderruflichen Schaden verursachen oder nicht.


2
Antwort-> Das Anwenden der einen oder anderen Lösung aus zufälligen Internetquellen, ohne die Ursache zu verstehen, kann das Problem lösen oder nicht, kann Frustration verursachen oder nicht, kann unwiderruflichen Schaden verursachen oder nicht. Antwort -> "Wir haben den SQL SERVICE-Benutzer in" Domain Admin "geändert." -ooooo-kaay dann.
Matao

3

Wir haben das SQL SERVICE userin " Domain Admin" geändert .

Ich habe einige Nachforschungen angestellt, um zu wissen, warum dies geschieht. Wenn Sie den Dienst herunterfahren, benötigen Sie ein Konto mit Berechtigungen, um einen neuen SPN zu erstellen (wenn er wieder aktiviert wird). Wenn Sie einen Dienst ohne ihn starten, wird er im SSPI-KONTEXT NICHT ERZEUGT angezeigt.

Wir ändern die Berechtigungen unseres Systemkontos.

Hoffe es hilft jemandem.


8
Es wird empfohlen, Dienstkonten die geringstmöglichen Berechtigungen zu erteilen. Wenn Sie Ihrem Dienstkonto einen Domänenadministrator geben, ist dies das Gegenteil von diesem Ansatz. Aus Sicherheitsgründen würde ich dringend davon abraten.
Mike

2

Wir hatten dieses Problem, nachdem wir eine Datenbank von PROD genommen und in der Qualitätssicherung wiederhergestellt hatten. Unsere Anwendung hat drei Datenbanken auf drei Servern aufgerufen und war ansonsten nicht kompliziert.

Es stellte sich heraus, dass ein falscher SPN (Service Principal Name) dem Dienstkonto, unter dem die Verbindung hätte ausgeführt werden sollen, im Wege stand. Wir haben dies mithilfe von Programme> Microsoft Kerberos Config Manager festgestellt.

Die kurzfristige Lösung bestand darin, SQL Server Configuration Manager zu verwenden und die SQL Server- und SQL Server Agent-Verbindungen vom Dienstkonto in "LocalSystem" unter "BuiltIn-Konto verwenden" zu ändern.


1

SSPI-Kontext kann nicht generiert werden kann genau das bedeuten. Wenn ein Client eine Verbindung zu einem SQL Server herstellt, verwendet er eine Generierungsmethode, die den vollqualifizierten Domänennamen und den Port des Diensttyps (MsSQLsvr) Server enthält. Es generiert DNS, um den Servernamen zu generieren. Wenn der Name aufgrund von CNAMEs oder Hostdateien usw. falsch aufgelöst wird, schlägt die Generierung fehl. Pingen Sie den gewünschten Server an und sehen Sie, welche Antwort Sie erhalten. Wenn es sich nicht um den vollqualifizierten Domänennamen des SQL-Servers handelt, wird der SPN falsch generiert und verursacht diesen Fehler.


1

In einigen Situationen wird dieser Fehler aufgrund der SPN-Einstellungen angezeigt. Wenn Sie beispielsweise Disaster Recovery-Tests für einen neuen Server durchführen, wird beim Herstellen einer Verbindung zu SQL Server möglicherweise ein SSPI-Fehler angezeigt. Noch seltsamer ist, dass Sie möglicherweise eine Verbindung mit SQL Server Management Studio herstellen können, jedoch keine Verbindung über ODBC oder OLEDB. Möglicherweise gibt es eine vorübergehende Problemumgehung, mit der Sie wahrscheinlich auf die Datenbank zugreifen können.

Problemumgehung : Erstellen Sie auf jedem Clientcomputer, der versucht, eine Verbindung zum SQL Server herzustellen , einen Eintrag in der Hostdatei jeder Arbeitsstation. Der genaue Mechanismus, mit dem das Problem behoben wird, ist nicht bestätigt. Es kann jedoch sein, dass die Verwendung des SPN die Notwendigkeit des SPN außer Kraft setzt.

Obwohl dies nicht in allen Fällen garantiert behoben werden kann, werden Sie höchstwahrscheinlich wieder einsatzbereit sein. Dies sollte nicht als dauerhafte Lösung angesehen werden. Sie sollten den SPN oder andere Probleme in einer idealen Situation lösen. Wenn Sie jedoch Probleme mit alten Windows-Computern haben, auf denen ein nicht unterstütztes Betriebssystem ausgeführt wird, oder wenn Sie nur Proof-of-Concept-Disaster-Recovery-Tests durchführen, sollten Sie dort sein, wo Sie sein müssen, um das Licht an zu halten oder die Produktion wieder in Betrieb zu nehmen.


Ich möchte nur wiederholen, dass dies eine Problemumgehung ist. Problemumgehungen sind keine dauerhaften Korrekturen. Wenn Sie in Zukunft weniger Probleme verursachen möchten, sollten Sie das zugrunde liegende Problem beheben, das meiner Erfahrung nach mit SPNs zu tun hat.
Jason Geiger

Ein Eintrag, der den Computernamen der Computer-IP zuordnet?
Bill Greer

1

Ich habe dieses Problem festgestellt und es wurde behoben, indem der SPN-Eintrag in den Attributen des Computerkontos in AD für den Server entfernt wurde

Suchen Sie das Computerkonto in AD-Benutzer und -Computer (erweiterte Ansicht).

Geben Sie hier die Bildbeschreibung ein

Entfernen Sie dann die beiden Einträge in servicePrincipalName für MSSQLSvc

Geben Sie hier die Bildbeschreibung ein


0

Ich hatte ein ähnliches Problem. Am Ende musste ich Einträge aus den SPN-Informationen auf dem Computerkonto in ADSIEdit entfernen.

Nach dem Entfernen der Einträge habe ich den SQL-Dienst neu gestartet und den SPN mit dem von mir erstellten Domänenressourcenkonto registriert. Ich konnte dann remote auf SQL Server zugreifen.


0

Für mich bestand die Lösung darin, SQL Studio als Domänenbenutzer mit folgendem Befehl auszuführen:

runas / user: OtherDomain \ User SSMS.exe


0

Ich habe dieses Problem erst kürzlich erlebt. Ich wurde als NT-SERVICE-Konto ausgeführt, und als ich zu einem Dienstkonto wechselte, konnte ich keine Verbindung mehr über SSMS mit dem Computernamen oder dem vollqualifizierten Domänennamen herstellen. Ich könnte mich mit der IP-Adresse verbinden. Beim Graben stellte ich fest, dass der SPN in Active Directory für die SQL-Instanz auf dem Computer registriert war. Nachdem ich dies entfernt und dann dem Dienstkonto hinzugefügt und den SQL-Computer neu gestartet hatte, funktionierte alles wie es sollte. Gerne stellen wir Ihnen bei Bedarf weitere Details zur Verfügung.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.