Fehlermeldung "Der Prinzipalname des Ziels ist nicht korrekt. Der SSPI-Kontext kann nicht generiert werden."

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:

  1. Programm/Website wird lokal mit Visual Studio ausgeführt/debuggt
  2. SQL-Server-Datenbank liegt im lokalen Netzwerk (LAN) auf einem anderen Server
  3. 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.