webentwicklung-frage-antwort-db.com.de

Der Zielprinzipalname ist falsch. SSPI-Kontext kann nicht generiert werden

Ich habe Probleme, eine SQL Server-Verbindung von Maschine A zu Maschine B zu erhalten, auf der der SQL Server ausgeführt wird.

Ich habe ausgiebig gegoogelt und alle Dinge, die ich gefunden habe, haben nicht funktioniert. Sie führen Sie auch nicht Schritt für Schritt durch den Lösungsprozess.

Wir verwenden kein Kerberos, aber NTLM wurde konfiguriert.

 enter image description here

Die beteiligten Maschinen sind (xx wird verwendet, um aus Sicherheitsgründen einen Teil des Computernamens zu verschleiern):

  • xxPRODSVR001 - Windows Server 2012-Domänencontroller
  • xxDEVSVR003 - Windows Server 2012 (Dieser Computer generiert den Fehler)
  • xxDEVSVR002 - Windows Server 2012 (Auf diesem Computer wird SQL Server 2012 ausgeführt)

Die folgenden SPNs sind auf DC (xxPRODSVR001) registriert. Ich habe die Domain aus Sicherheitsgründen mit yyy verschleiert:

Registrierte ServicePrincipalNames für CN = xxDEVSVR002, CN = Computer, DC = JJJ, DC = Lokal:

            MSSQLSvc/xxDEVSVR002.yyy.local:49298

            MSSQLSvc/xxDEVSVR002.yyy.local:TFS

            RestrictedKrbHost/xxDEVSVR002

            RestrictedKrbHost/xxDEVSVR002.yyy.local

            Hyper-V Replica Service/xxDEVSVR002

            Hyper-V Replica Service/xxDEVSVR002.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR002

            Microsoft Virtual System Migration Service/xxDEVSVR002.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR002

            Microsoft Virtual Console Service/xxDEVSVR002.yyy.local

            SMTPSVC/xxDEVSVR002

            SMTPSVC/xxDEVSVR002.yyy.local

            WSMAN/xxDEVSVR002

            WSMAN/xxDEVSVR002.yyy.local

            Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/xxDEVSVR002.yyy.local

            TERMSRV/xxDEVSVR002

            TERMSRV/xxDEVSVR002.yyy.local

            Host/xxDEVSVR002

            Host/xxDEVSVR002.yyy.local

Registrierte ServicePrincipalNames für CN = xxDEVSVR003, CN = Computer, DC = JJJ, DC = Lokal:

            MSSQLSvc/xxDEVSVR003.yyy.local:1433

            MSSQLSvc/xxDEVSVR003.yyy.local

            Hyper-V Replica Service/xxDEVSVR003

            Hyper-V Replica Service/xxDEVSVR003.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR003

            Microsoft Virtual System Migration Service/xxDEVSVR003.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR003

            Microsoft Virtual Console Service/xxDEVSVR003.yyy.local

            WSMAN/xxDEVSVR003

            WSMAN/xxDEVSVR003.yyy.local

            TERMSRV/xxDEVSVR003

            TERMSRV/xxDEVSVR003.yyy.local

            RestrictedKrbHost/xxDEVSVR003

            Host/xxDEVSVR003

            RestrictedKrbHost/xxDEVSVR003.yyy.local

            Host/xxDEVSVR003.yyy.local

Wenn jetzt nur die SQL Server-Fehlermeldung aussagekräftiger ist und mir mitgeteilt wird, mit welchem ​​Namen des Principals eine Verbindung hergestellt werden soll, könnte ich dies möglicherweise diagnostizieren. 

Kann also jemand von mir durchgehen, wie ich dieses Problem lösen kann, oder können Sie etwas in dem sehen, was ich vorausgesetzt habe? 

Ich würde gerne mehr Debug-Informationen generieren, sagen Sie mir einfach, was Sie brauchen.

37
TheEdge

Ich verbrachte ungefähr ein paar Stunden mit dem gleichen Problem ... Es stellte sich heraus, dass "Integrated Security=true" das Problem verursacht hat.

Versuchen Sie, diesen Parameter aus der Verbindungszeichenfolge zu entfernen.

20
Anatolyevich

Ich hatte dieses Problem mit einer ASP.NET-MVC-App, an der ich gerade arbeitete.

Ich bemerkte, dass ich kürzlich mein Passwort geändert hatte, und konnte es durch Abmelden und erneutes Anmelden korrigieren. 

17
Slothario

Diese Fehlermeldung wurde bei der Verbindung über SQL Server Management Studio mit Windows-Authentifizierung angezeigt. Mein Passwort war abgelaufen, aber ich hatte es noch nicht geändert. Nach der Änderung musste ich mich abmelden und wieder anmelden, damit der Computer mit meinen neuen Anmeldeinformationen arbeitete.

11
Matt Shepherd

Ich habe mich bei Windows 10 mit einem PIN anstelle eines Kennworts angemeldet. Ich habe mich stattdessen mit meinem Kennwort abgemeldet und konnte mich über Management Studio bei SQL Server anmelden.

7
Don

Fügen Sie einfach eine weitere potenzielle Lösung zu diesem mehrdeutigen Fehler hinzu: The target principal name is incorrect. Cannot generate SSPI context. (.Net SqlClient Data Provider):

Stellen Sie sicher, dass die IP-Adresse, die beim Pingen des SQL-Servers aufgelöst wird, mit der im Configuration Manager identisch ist. Öffnen Sie zum Überprüfen den SQL Server-Konfigurations-Manager, und wechseln Sie zu SQL Server-Netzwerkkonfiguration> Protokolle für MSSQLServer> TCP/IP.

Stellen Sie sicher, dass TCP/IP aktiviert ist, und stellen Sie auf der Registerkarte IP-Adressen sicher, dass die IP-Adresse, die der Server beim Pingen auflöst, hier dieselbe ist. Das hat diesen Fehler für mich behoben.

5
Alex

Ich habe die gleiche Fehlermeldung erhalten, als ich die Windows-Authentifizierung durchführte. Hört sich lächerlich an, aber nur für den Fall, dass es jemand anderem hilft: Es war, weil mein Domain-Account irgendwie gesperrt wurde, während ich noch angemeldet war (!). Das Entsperren des Kontos wurde behoben.

5
Quester

Melden Sie sich bei Ihrer SQL Box und Ihrem Client an und geben Sie Folgendes ein:

ipconfig /flushdns
nbtstat -R

Wenn dies nicht funktioniert, erneuern Sie Ihr DHCP auf Ihrem Client-Computer ... Dies funktioniert für 2 PCs in unserem Büro.

4
Frank.Germain

Der SSPI-Kontextfehler weist definitiv darauf hin, dass die Authentifizierung mit Kerberos versucht wird.

Überprüfen Sie die Sicherheitsereignisprotokolle. Wenn Sie Kerberos verwenden, sollten Anmeldeversuche mit dem Authentifizierungspaket Kerberos angezeigt werden.

Die NTLM-Authentifizierung schlägt möglicherweise fehl und daher wird ein Kerberos-Authentifizierungsversuch durchgeführt. Möglicherweise wird auch ein NTLM-Anmeldeversuch in Ihrem Sicherheitsereignisprotokoll angezeigt.

Sie können die Kerberos-Ereignisprotokollierung in dev aktivieren, um zu debuggen, warum der Kerberos ausfällt, obwohl er sehr ausführlich ist.

3
Sarah

Ich bin nur darauf gestoßen und habe es behoben, indem ich zwei Dinge getan habe:

  1. Erteilen von Lese-/Schreibberechtigungen für servicePrincipalName für das Dienstkonto mithilfe der ADSI-Bearbeitung, wie unter https://support.Microsoft.com/en-us/kb/811889 beschrieben
  2. Entfernen der zuvor auf dem SQL Server-Computerkonto vorhandenen SPNs (im Gegensatz zum Dienstkonto) mithilfe von

    setspn -D MSSQLSvc/HOSTNAME.domain.name.com:1234 HOSTNAME
    

    dabei war 1234 die von der Instanz verwendete Portnummer (meine war keine Standardinstanz).

3
EM0

Ich testete IPv6 auf einem Cluster von PCs in einem isolierten Netzwerk und stieß auf dieses Problem, als ich zurück zu IPv4 kam. Ich hatte im Active Directory, DNS und DHCP gespielt, also habe ich keine Ahnung, was ich veranlasst habe, das Kerberos-Setup zu brechen.

Ich habe die Verbindung außerhalb meiner Software mit diesem nützlichen Tipp zum Herstellen der Verbindung mit der gefundenen Remote-Verbindung erneut getestet.

https://blogs.msdn.Microsoft.com/steverac/2010/12/13/test-remote-sql-connectivity-easily/

nach einer kurzen Suche wurde dies auf der Microsoft-Website gefunden https://support.Microsoft.com/de-de/help/811889/how-to-troubleshoot-the-cannot-generate-sspi-context- Fehlermeldung .

führen Sie das Tool auf dem SQL-Server aus. Überprüfen Sie, ob ein Problem vorliegt Wenn der Status Fehler anzeigt, klicken Sie auf die Schaltfläche zum Beheben.

Dies hat das Problem für mich gelöst.

2
Graham Walker

In meinem Fall wurde das Problem durch einen Neustart von SQL Server 2014 (auf meinem Entwicklungsserver) behoben.

2
mxasim

Ich hatte dieses Problem beim Zugriff auf die Webanwendung. Es könnte daran liegen, dass ich kürzlich ein Windows-Passwort geändert habe.

Dieses Problem wurde behoben, nachdem das Kennwort für den App-Pool, in dem ich die Webanwendung gehostet habe, aktualisiert wurde.

2
Ramki

Prüfen Sie, ob Ihre Uhr zwischen Client und Server übereinstimmt.

Als ich diesen Fehler zeitweise hatte, funktionierte keine der oben genannten Antworten, dann fanden wir heraus, dass auf einigen unserer Server die Zeit abgelaufen war. Sobald sie erneut synchronisiert wurden, ging der Fehler weg. Suchen Sie nach w32tm oder NTP, um zu sehen, wie die Uhrzeit unter Windows automatisch synchronisiert wird.

2
Daniel Bailey

Ich habe dazu eine neue Version gefunden: SQL 2012 gehostet auf Server 2012 . Wurde beauftragt, einen Cluster für SQL AlwaysOn zu erstellen.
Cluster wurde erstellt. Jeder erhielt die SSPI-Nachricht. 

Um die Probleme zu beheben, wurde folgender Befehl ausgeführt: 

setspn -D MSSQLSvc/SERVER_FQNName:1433 DomainNamerunningSQLService 

DomainNamerunningSQLService == Das Domänenkonto, das ich für SQL festgelegt habe Ich brauchte einen Domänenadministrator, um den Befehl auszuführen. Nur ein Server im Cluster hatte Probleme. 

Dann wurde SQL neu gestartet. Zu meiner Überraschung konnte ich mich verbinden.

1
Questions101

Ich bin heute auf dieses Problem gestoßen und wollte meinen Fix mitteilen, da dieser einfach übersehen und leicht zu beheben ist.

Wir verwalten unser eigenes rDNS und haben kürzlich unser Servernamensschema erneuert. Als Teil davon sollten wir unsere rDNS aktualisieren und vergessen, dies zu tun.

Ein Ping hat den richtigen Hostnamen angezeigt, aber ein Ping -a hat den falschen Hostnamen zurückgegeben.

Problembehebung: Ändern Sie das rDNS, führen Sie ein ipconfig/flushdns durch, warten Sie 30 Sekunden (ich tue gerade etwas), führen Sie einen weiteren Ping -a aus.

1
CrainBramp

Ich habe versucht, eine Verbindung zu einem VM herzustellen, auf dem SQL Server 2015 von meinem Laptop in einer Visual Studio 2015-Konsolenanwendung ausgeführt wird. Ich lasse meine App am Abend zuvor laufen und es ist in Ordnung. Am Morgen versuche ich die App zu debuggen und erhalte diesen Fehler. Ich habe versucht, ipconfig/flush und release + renew und ein paar andere Müll, aber am Ende ...

Starten Sie Ihre VM neu und starten Sie den Client neu. Das hat es für mich behoben. Ich hätte es wissen sollen, arbeitet jedes Mal neu.

1
AlbatrossCafe

Stellen Sie sicher, dass "Named Pipes" in "SQL Server Configuration Manager" aktiviert sind. Das hat bei mir funktioniert.

  1. Öffnen Sie "SQL Server Configuration Manager".
  2. Erweitern Sie "SQL Server-Netzwerkkonfiguration" aus der Liste auf der linken Seite.
  3. Wählen Sie "Protokolle für [Name Ihrer Instanz]".
  4. Klicken Sie mit der rechten Maustaste auf "Named Pipes" in der Liste auf der rechten Seite.
  5. Wählen Sie "Aktivieren"
  6. Starten Sie Ihren Instanzdienst neu.
1
S3minaki

Da ich hier auf der Suche nach einer Lösung für mein eigenes Problem gelandet bin, teile ich meine Lösung hier mit, falls auch andere hier landen.

Ich habe eine Verbindung zu SQL Server hergestellt, bis mein Computer in ein anderes Büro in eine andere Domäne verschoben wurde. Nach der Umstellung erhielt ich diesen Fehler in Bezug auf den Ziel-Principal-Namen. Was wurde behoben, wenn eine Verbindung mit einem vollständig qualifizierten Namen hergestellt wurde wie: server.domain.com . Sobald ich auf diese Weise eine Verbindung zum ersten Server hergestellt habe, konnte ich eigentlich nur mit dem Servernamen (ohne die vollständige Qualifikation) eine Verbindung zu anderen Servern herstellen. Die Laufleistung kann jedoch variieren.

1
Greg

Hatte nur einen Benutzer, der diesen Fehler nur bei einem SQL Server erhalten hatte. Es stellte sich heraus, dass er ein altes Passwort in der Systemsteuerung - Credential Manager unter Windows Credentials für den Servernamen gespeichert hatte. Die gespeicherten Anmeldeinformationen wurden entfernt und es funktionierte.

0
sqlslinger

In meinem Fall bestand das Problem darin, DNS im WLAN einzurichten. Ich entfernte die Einstellungen, ließ sie leer und arbeitete.

 Como ficou minha configuração do DNS

0
Mateus Cabral

Ich füge das hier hinzu, da es mich erwischte und jemand anderem helfen könnte. Abgesehen davon, dass ich kein Windows-Benutzer bin, sondern ein Szenario mit SQL-Server betrachten musste.

Ich habe die Entwicklerversion des vollständigen SQL Server-Produkts heruntergeladen und unter Windows 10 installiert. Alles gut für lokale Verbindungen, nichts für den Remote-Client.

Ich habe viele der oben genannten Dinge ausprobiert, aber es wurde mir schließlich klar, dass die Windows-Authentifizierung Remoteclient\myuser authentifizieren wollte und es in einer eigenständigen Windows-Welt keine Möglichkeit gab, einen Authentifizierungsmechanismus zu erstellen (wie ich es kerberos verstehe). Die Fehlermeldung lautet "SSPI-Kontext kann nicht generiert werden".

Die Verwendung der SQL-Authentifizierung schien ebenfalls nicht zu funktionieren.

Schließlich ging ich zurück zu SQL Server Express, das über einen kombinierten Modus verfügt, und ich konnte dann die SQL-Authentifizierung von den Remote-Clients aus verwenden.

0
Longmang

Ich hatte das gleiche Problem. Ich habe kürzlich mein Windows-Passwort geändert und auf meiner Website wurde der Fehler ausgegeben. Ich habe versucht, mich abzumelden und einzuloggen, funktionierte aber nicht. Dann wurde mir klar, dass ich meine defaultappppol mit meinem Konto im Abschnitt "Benutzerdefiniertes Konto" konfiguriert und das Konto erneut mit dem neuen Kennwort konfiguriert habe. Das hat den Zauber gemacht !!! Bitte lassen Sie mich Ihr Feedback zu dieser Lösung wissen.

0
Anitha Sriram

Ich bin auf eine Variante dieses Problems gestoßen, hier waren die Merkmale:

  • Der Benutzer konnte erfolgreich verbinden mit einer benannten Instanz verbinden, z. B. waren Verbindungen zu Server\Instance erfolgreich 
  • Der Benutzer konnte (nicht) eine Verbindung zur Standardinstanz herstellen, z. B. fehlgeschlagene Verbindungen zu Server mit dem Screenshot des OP bezüglich SSPI 
  • Der Benutzer konnte keine Standardinstanz mit vollständig qualifiziertem Namen verbinden, z. B. Verbindungen zu Server.domain.com fehlgeschlagen (Zeitlimit) 
  • Der Benutzer konnte keine IP-Adresse ohne benannte Instanz verbinden, z. B. fehlgeschlagene Verbindungen zu 192.168.1.134 
  • Andere Benutzer, die sich nicht in der Domäne befinden (z. B. Benutzer, die ein VPN mit dem Netzwerk verbinden), aber die Domänenanmeldeinformationen verwenden, konnten erfolgreich eine Verbindung zur Standardinstanz und zur IP-Adresse herstellen

Nach vielen Kopfschmerzen beim Versuch herauszufinden, warum dieser einzelne Benutzer keine Verbindung herstellen konnte, haben wir folgende Schritte unternommen, um die Situation zu beheben:

  1. Betrachten Sie den Server in der SPN-Liste mit
    setspn -l Server
    ein. In unserem Fall heißt es Server.domain.com 
  2. Fügen Sie der Hosts-Datei in C:\Windows\System32\drivers\etc\hosts einen Eintrag hinzu (führen Sie den Editor als Administrator aus, um diese Datei zu ändern). Der Eintrag, den wir hinzugefügt haben, war
    Server.domain.com Server

Danach konnten wir uns erfolgreich über SSMS mit der Standardinstanz verbinden.

0
sorrell

Ich führe ein Mickey Mouse-Testsystem basierend auf SQL.COM aus.

Ich habe setspn -T sql -F -Q */Servername (in diesem Fall SQL01) auf der Maschine ausgeführt, zu der ich keine Verbindung herstellen konnte, und einer Maschine, die ich konnte. Ich habe dann einfach die zusätzlichen Einträge in der Problemmaschine entfernt und alles hat funktioniert, z. setspn -D MSSQLSvc/SQL01.SQL.COM:1433 SQL01

0
DOK

Ich hatte auch dieses Problem auf SQL Server 2014, während ich mich mit der Windows-Authentifizierung anmeldete. Um das Problem zu beheben, habe ich meinen Server einmal neu gestartet und dann versucht, mich anzumelden. 

0

Ich hatte dieses Problem, als ich versuchte, über L2TP VPN auf einem Windows 10-Computer mit Domänenverbindung eine Verbindung zu meiner SQL Server 2017-Instanz herzustellen.

Das Problem lag in meinen VPN-Einstellungen. In den Sicherheitseinstellungen unter Authentifizierung, unter Verwendung von EAP-MSCHAPv2 und im Dialogfeld "Eigenschaften" hatte ich Automatically use my Windows logon name and password (and domain if any). ausgewählt.

 Location of the option to turn off

Ich habe dies ausgeschaltet und dann mein VPN wieder verbunden und dann konnte ich mich erfolgreich mit SQL Server verbinden.

Ich glaube, dass dies dazu führte, dass mein SQL-Login (mit Windows-Kontosicherheit) Kerberos anstelle von NTLM verwendete, wodurch der SSPI-Fehler verursacht wurde.

0
petryuno1

Ich hatte das gleiche Problem, aber das Sperren und Entsperren der Maschine funktionierte für mich. Manchmal geben Firewall-Probleme Fehler.

Ich bin mir nicht sicher, ob es für Sie funktionieren wird oder nicht, teilen Sie einfach meine Erfahrungen.

0
somu

Ich hatte dieses Problem auf meinem SQL Server. Ich setspn -D mssqlsvc\Hostname.domainname Hostname, stoppte dann und startete meinen SQL Server-Dienst.

Ich denke, dass ich es getan hätte, wenn ich meinen SQL-Dienst einfach angehalten und gestartet hätte.

0
Jeff

Ich habe alle Lösungen hier ausprobiert und noch keine hat funktioniert. Eine Problemumgehung besteht darin, Klicken Sie auf Connect , geben Sie den Servernamen ein und wählen Sie Optionen, Registerkarte Verbindungseigenschaften. Stellen Sie das "Netzwerkprotokoll" auf "Named Pipes". Dadurch können Benutzer mithilfe ihrer Netzwerkanmeldeinformationen eine Remote-Verbindung herstellen. Ich werde ein Update posten, wenn ich ein Update bekomme.

0
Julie

Überhaupt keine ideale Lösung, ich wollte dies einfach als Referenz für jeden hinzufügen, der diese Seite sieht:

Bei diesem Problem habe ich versucht, mit meinem Domänenkonto eine Verbindung zu einer Remote-SQL Server-Instanz herzustellen. Bei einer Instanz, die auf einem anderen Computer gehostet wird, funktionierte das Gleiche.

Wenn Sie also die Möglichkeit haben, nur eine andere Instanz zu verwenden, kann dies hilfreich sein, was jedoch nicht das eigentliche Problem betrifft.

0
Josh G

Anscheinend handelt es sich um ein Problem mit dem DNS-Server ... Um dieses Problem zu beheben, ändern Sie die IP-Adresse in Computername.

Beispiel: Ändern Sie den Wert "10.0.0.10\TestDB" in "YourComputerName\TestDB".

0
Jaykumar Anbu