Symptome
Bei einem Programm/Website, das lokal auf einem Entwicklungsrechner läuft, kommt beim Zugriff auf eine Datenbank mit Microsoft SQL Server folgende Fehlermeldung:
System.Data.SqlClient.SqlException: Der Prinzipalname des Ziels ist nicht korrekt. Der SSPI-Kontext kann nicht generiert werden.
Dies geschieht beim Öffnen der Verbindung via SqlConnection.Open()
.
Der Aufrufstapel schaut grob so aus:
[SqlException (0x80131904): Der Prinzipalname des Ziels ist nicht korrekt. Der SSPI-Kontext kann nicht generiert werden.]
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +1307
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +108
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +935
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +143
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +17
System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +139
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +448
System.Data.SqlClient.SqlConnection.Open() +130
Das Programm bzw. die Website hat zuvor korrekt funktioniert.
Ursache
Es gibt vermutlich unterschiedlichste Ursachen.
Bei mir ist häufig eine offene VPN-Verbindung auf meinem lokalen Entwicklungsrechner die Ursache.
Lösung
VPN-Verbindung trennen.
Weitere Details
Bei mir gibt es oft folgende Konstellation:
- Programm/Website wird lokal mit Visual Studio ausgeführt/debuggt
- SQL-Server-Datenbank liegt im lokalen Netzwerk (LAN) auf einem anderen Server
- VPN zu externem Kundennetzwerk ist aktiv
Je nach VPN-Client und -Konfiguration kappt dieser lokale Verbindungen, bzw. lässt keine neuen Verbindungen zu.
Deshalb erreicht das Programm/Website auf dem Entwicklungs-Rechner dann nicht mehr die Datenbank, und die oben genannte Fehlermeldung tritt auf.