Update: Fehlermeldung "SSPI-Kontext kann nicht generiert werden" Sie versuchen, die Verbindung zu einem Server mit SQL Server 2000 SP3


Zusammenfassung


Wenn Sie versuchen von einem Clientcomputer eine Verbindung zu einem Server mit Microsoft SQL Server 2000 Service Pack 3 (SP3), wird die Verbindung mit einer Fehlermeldung, wenn der Servername von IP (Internet Protocol) Adresse aufgelöst werden kann. Dieses Verhalten tritt auf, weil SQLOLEDB den Rückgabewert der Funktion ConnectionGetSvrUser Dbnetlib falsch interpretiert.
  • Ein Hotfix behebt dieses Problem.
  • Um dieses Problem zu umgehen, manuell erstellen Sie einen Host-Eintrag für die IP-Adresse des Client-Computers.
  • Zum Reproduzieren des Problems erstellen Sie und konfigurieren Sie die dynamische IP-Adresse des Servers, und mithilfe von SQL Query Analyzer oder Rowset Viewer auf einem Clientcomputer mit dem Server schließen.

Problembeschreibung


Wenn Sie versuchen, einen Clientcomputer ein Microsoft SQL Server 2000 SP3-Server-Computer herstellen, der Servername kann nicht von der IP (Internet Protocol) Adresse aufgelöst und die Verbindung fehlschlägt.

Beim Herstellen einer zu SQL Server 2000 SP3-Server-Computer mit SQL Query Analyzer Verbindung wird die folgende Fehlermeldung angezeigt:
Server: Msg 11004, Ebene 16, Status 1
[Microsoft] [ODBC SQL Server Driver] SSPI-Kontext kann nicht generiert werden.
Wenn Sie den SQL Server OLE DB-Provider (SQLOLEDB) Verbindung zu einem Server mit SQL Server 2000 mit Rowset Viewer verwenden, erhalten Sie folgende Fehlermeldung:
Quelle: "Microsoft OLE DB Provider für SQL Server"

Schnittstelle: IID_IDBInitialize
Ergebnis: 0 x 80004005 E_FAIL =

ISQLErrorInfo: [HY000] [0x00002afc]
IErrorInfo: [0x00002afc] "kann nicht generate SSPI Context"

Datei: D:\MDACTools\rowsetviewer\CBase.cpp
Zeile: 1067

Ursache


Wenn SQLOLEDB ConnectionGetSvrUser Funktion der Dbnetlib-Bibliothek aufruft, interpretiert es falsch, die diese Funktion gibt einen booleschen Wert zurück. Die ConnectionGetSvrUser -Funktion soll ein Void zurückgeben. Daher, was im Register "eax" befindet zurückgegeben wird.


Die ConnectionGetSvrUser -Funktion ruft intern Gethostbyaddr -Funktion. Gethostbyaddr Funktion erhält den Hostnamen, der die eine bestimmte IP-Adresse entspricht. Schlägt die Gethostbyaddr -Funktion gibt ein NULL-Zeichen auf das Register "eax" zurück. Deshalb gibt die Funktion ConnectionGetSvrUser der Wert FALSE . Dieses Verhalten führt ein Anmeldefehler auf SQL Server 2000 SP3-Server-Computer.


Problemlösung


Ein unterstützter Hotfix ist von Microsoft erhältlich. Dieser Hotfix soll nur der Behebung des Problems dienen, das in diesem Artikel beschrieben wird. Verwenden Sie diesen Hotfix nur auf Systemen, bei denen dieses spezielle Problem auftritt.

Wenn der Hotfix zum Download zur Verfügung steht, gibt es einen Abschnitt "Hotfixdownload available" ("Hotfixdownload verfügbar"), am oberen Rand dieses Knowledge Base-Artikel. Wenn dieser Abschnitt nicht angezeigt wird, senden Sie eine Anforderung an Microsoft Customer Service and Support, um den Hotfix zu erhalten.

Hinweis Falls weitere Probleme auftreten oder andere Schritte zur Problembehandlung erforderlich sind, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Die normalen Supportkosten gelten für zusätzliche Supportfragen und Probleme, die nicht diesem speziellen Hotfix zugeordnet werden können. Eine vollständige Liste der Telefonnummern von Microsoft Customer Service and Support oder eine separate Serviceanfrage erstellen finden Sie auf der folgenden Microsoft-Website:Hinweis Das Formular "Hotfix download available" ("Hotfixdownload verfügbar") zeigt die Sprachen an, für die der Hotfix verfügbar ist. Wenn Ihre Sprache nicht angezeigt wird, ist dieser Hotfix für Ihre Sprache nicht verfügbar. Die englische Version dieses Updates besitzt die Dateiattribute (oder höher), die in der folgenden Tabelle aufgelistet werden. Die Datums- und Uhrzeitangaben für diese Dateien sind in koordinierter Weltzeit (UTC) aufgelistet. Wenn Sie die Dateiinformationen anzeigen, werden sie in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu suchen, können Sie mithilfe die Registerkarte Zeitzone Datum und Uhrzeit im Systemsteuerungsprogramm.

Date Time Version Size File name
--------------------------------------------------------------

15-Jun-2004 00:22 2000.85.1045.0 28,672 Dbnmpntw.dll
15-Jun-2004 00:21 2.80.1045.0 147,456 Msadds.dll
15-Jun-2004 00:21 2.80.1045.0 512,000 Msado15.dll
15-Jun-2004 00:21 2.80.1045.0 163,840 Msadomd.dll
15-Jun-2004 00:21 2.80.1045.0 184,320 Msadox.dll
15-Jun-2004 00:21 2.80.1045.0 53,248 Msadrh15.dll
15-Jun-2004 00:21 2.80.1045.0 225,280 Msdaora.dll
15-Jun-2004 00:21 2.80.1045.0 147,456 Msdart.dll
15-Jun-2004 00:21 2.575.1045.0 139,264 Msorcl32.dll
15-Jun-2004 00:21 3.525.1045.0 221,184 Odbc32.dll
15-Jun-2004 00:22 2000.85.1045.0 24,576 Odbcbcp.dll
15-Jun-2004 00:21 2.80.1045.0 442,368 Oledb32.dll
15-Jun-2004 00:21 2000.85.1045.0 503,808 Sqloledb.dll
15-Jun-2004 00:21 2000.85.1045.0 401,408 Sqlsrv32.dll
15-Jun-2004 00:08 2000.85.1045.0 208,896 Sqlxmlx.dll

PROBLEMUMGEHUNG


Um dieses Problem zu umgehen, manuell erstellen Sie einen Host-Eintrag auf dem Client-Computer die IP-Adresse, die Sie verbinden möchten.
  1. Starten Sie Windows Explorer.
  2. Suchen Sie die Hosts-Datei, und öffnen Sie die Datei in Editor.

    Hinweis Sie finden die Datei im Pfad %SystemRoot%\System32\Drivers\Etc.
  3. Fügen Sie am Ende der Datei Folgendes hinzu:
    Zufällige IP Computername

    Hinweis Zufällige IP steht für die IP-Adresse, die nicht von einem anderen Computer im Netzwerk verwendet wird. Computername ist ein Platzhalter für den Namen des Computers mit SQL Server 2000 SP3 ausgeführt werden. Zufällige IP -Adresse und den Namen Computername müssen durch mindestens ein Leerzeichen getrennt.
  4. Klicken Sie im Menü Datei auf Speichern.
  5. Schließen Sie die Datei.

Status


Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Weitere Informationen


Schritte zum Reproduzieren des Problems

Dynamische IP-Adresse konfigurieren

  1. Melden Sie sich als Administrator an dem Computer mit SQL Server 2000 SP3.
  2. Doppelklicken Sie im Bedienfeld auf Netzwerkanschlüsse.
  3. Doppelklicken Sie auf LAN-Verbindung, die Sie ändern möchten.
  4. Klicken Sie im Dialogfeld Status von LAN-Verbindung auf Eigenschaften. Das Dialogfeld Eigenschaften von LAN-Verbindung .
  5. Klicken Sie im Feld diese Verbindung verwendet folgende Elemente auf Internetprotokoll (TCP/IP), und klicken Sie dann auf Eigenschaften. Das Dialogfeld Eigenschaften von Internetprotokoll (TCP/IP) wird angezeigt.
  6. Klicken Sie auf eine IP-Adresse automatisch beziehen, und klicken Sie auf OK.
  7. Klicken Sie im Dialogfeld Eigenschaften von LAN-Verbindung auf Schließen.

  8. Klicken Sie im Dialogfeld Status von LAN-Verbindung auf Schließen.
  9. Klicken Sie auf Start, klicken Sie auf Ausführen, geben Sie cmd ein, und klicken Sie auf OK.
  10. Geben Sie in der Befehlszeile Ping Computernamenund drücken Sie die EINGABETASTE.

    Hinweis Computername steht für den Namen des Computers, auf dem SQL Server 2003 ausgeführt wird

    Sie erhalten eine Fehlermeldung, die der folgenden ähnelt:
    Ping Computername [Dynamische IP] mit 32 Bytes Daten:

    Antwort von Dynamischen IP-Adresse: Bytes = 32 Zeit < 1ms TTL = 128
    Antwort von Dynamischen IP-Adresse: Bytes = 32 Zeit < 1ms TTL = 128
    Antwort von Dynamischen IP-Adresse: Bytes = 32 Zeit < 1ms TTL = 128

    Ping-Statistik für Dynamische IP:
    Pakete: Gesendet = 4, empfangen = 4, verloren = 0 (0 % Verlust),
    Ungefähre Zeitangaben in Millisekunden:
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms
    Hinweis Dynamische IP steht für dynamische IP des Computers Computernamen .
  11. Zum Beenden der Befehlszeile geben Sie exit einund drücken Sie dann die EINGABETASTE.
  12. Wiederholen Sie die Schritte c bis e auf folgende IP-Adresse verwenden.
  13. Geben Sie im Feld IP-Adresse die Dynamische IP- Adresse.

    Hinweis Dynamische IP steht für dynamische IP des Computers Computernamen .
  14. Geben Sie im Feld Subnetzmaske die Subnetzmaske für das Netzwerk.
  15. Geben Sie im Feld Standardgateway die IP-Adresse des Computers oder des Geräts auf das Netzwerk zu einem anderen Netzwerk oder dem Internet verbindet.
  16. Geben Sie im Feld Bevorzugter DNS-Server die IP-Adresse des Computers, der Hostnamen in IP-Adressen auflöst.
  17. Geben Sie im Feld Alternativer DNS-Server die IP-Adresse des DNS-Computers, der zu verwenden, wenn der bevorzugte DNS (Domain Name System) Server nicht verfügbar ist.
  18. Klicken Sie auf Erweitert. Erweiterte TCP/IP-Einstellungen wird angezeigt.
  19. IP-Adressenklicken Sie auf Hinzufügen. Das Dialogfeld TCP/IP-Adresse angezeigt wird.
  20. Geben Sie im Feld IP-Adresse Zufällige IP- Adresse.

    Hinweis Zufällige IP steht für die IP-Adresse, die nicht von einem anderen Computer im Netzwerk verwendet wird.
  21. Im Feld Subnetzmaske die Subnetzmaske für das Netzwerk, und klicken Sie auf Hinzufügen.
  22. Erweiterte TCP/IP-Einstellungenklicken Sie auf OK.
  23. Klicken Sie in den Eigenschaften von Internetprotokoll (TCP/IP) auf OK. Klicken Sie im Dialogfeld Eigenschaften von LAN-Verbindung auf Schließen. Klicken Sie im Dialogfeld Status von LAN-Verbindung auf Schließen.

Verbinden Sie mit SQL Server 2000 SP3-Server-Computer von einem Clientcomputer über SQL Query Analyzer

  1. Starten Sie SQL Query Analyzer. Das Dialogfeld Verbindung mit SQL Server herstellen .
  2. Geben Sie im Feld SQL Server Zufällige IP.

    Hinweis Zufällige IP steht für die IP-Adresse, die nicht von einem anderen Computer im Netzwerk verwendet wird.
  3. Klicken Sie auf Windows-Authentifizierung verwenden.
  4. Klicken Sie auf OK. Stellen Sie fest, die im Abschnitt "Symptome" erwähnte Fehlermeldung.

Verbinden Sie mit SQL Server 2000 SP3-Server-Computer von einem Clientcomputer im Rowset Viewer

  1. Rowset Viewer zu starten. Microsoft OLE DB-RowsetViewer angezeigt.
  2. Klicken Sie im Menü Datei auf Vollständige verbinden. Das Dialogfeld Vollständigen Connect - keine Beschreibung verfügbar wird.
  3. Klicken Sie in der Liste unter Verbindung SQLOLEDB .
  4. Geben Sie im Feld Datenquelle Zufällige IP unter Quelle.

    Hinweis Zufällige IP steht für die IP-Adresse, die nicht von einem anderen Computer im Netzwerk verwendet wird.
  5. Klicken Sie unter Anmeldung DBPROMPT_NOPROMPT Prompt aus.
  6. Klicken Sie auf der Registerkarte Eigenschaften auf Erweitert. Das Dialogfenster IDBProperties:: SetProperties .
  7. Aktivieren Sie das Kontrollkästchen DBPROP_AUTH_INTEGRATED , und klicken Sie dann auf OK.
  8. Klicken Sie auf OKim Dialogfeld Vollständigen Connect - keine Beschreibung verfügbar . Stellen Sie fest, die im Abschnitt "Symptome" erwähnte Fehlermeldung.
Hinweis Der Clientcomputer und SQL Server 2000 SP3-Server-Computer müssen in der gleichen Domäne sein. Wenn Sie versuchen, die Verbindung mit SQL Server 2000 SP3-Server-Computer mit Zufälligen IP des Computers, verbindet ihn mit dem SQL Server 2000 SP3-Server-Computer ohne Fehler.

Referenzen


Weitere Informationen finden Sie auf folgenden Websites von Microsoft Developer Network (MSDN):
Übersicht über die OLE DB-TestTools
http://msdn2.microsoft.com/en-us/library/ms721219.aspx
Klicken Sie für Weitere Informationen auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:

323444 wie die IP-Adresse einer Netzwerkkarte in Windows Server 2003

Klicken Sie für Weitere Informationen auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:

824684 Erläuterung von der standardmäßigen Standardbegriffen bei Microsoft Softwareupdates