FIX: Foutbericht een 'Kan geen SSPI-context genereren' wanneer u verbinding maakt met een computer met SQL Server 2000 SP3 server


Samenvatting


Wanneer u de verbinding met een computer met Microsoft SQL Server 2000 Service Pack 3 (SP3)-server vanaf een clientcomputer verbinding worden gemaakt met een foutbericht als de naam van de server van het Internet Protocol (IP)-adres kan niet worden omgezet. Dit probleem treedt op omdat SQLOLEDB verkeerd de resultaatwaarde van de functie ConnectionGetSvrUser van dbnetlib interpreteert.
  • Dit probleem wordt opgelost met een hotfix.
  • Om dit probleem te omzeilen, een hostvermelding het IP-adres handmatig op de clientcomputer te maken.
  • Om het probleem te reproduceren, maken en dynamische IP-adres van de server en vervolgens verbinding maken met de server met behulp van SQL Query Analyzer of rijenset Viewer vanaf een clientcomputer.

Symptomen


Wanneer u een clientcomputer verbinding met een computer met Microsoft SQL Server 2000 SP3 server, de naam van de server kan niet worden omgezet van het Internet Protocol (IP)-adres en de verbinding mislukt.

Wanneer u verbinding met de computer met SQL Server 2000 SP3 server met SQL Query Analyzer, wordt het volgende foutbericht weergegeven:
Server: Msg 11004, niveau 16, staat 1
[Microsoft] [ODBC SQL Server Driver] Kan geen SSPI-context genereren
Wanneer u de SQL Server OLE DB Provider (SQLOLEDB) verbinding maken met een SQL Server 2000 server-computer met behulp van de rijenset Viewer gebruikt, wordt het volgende foutbericht weergegeven:
Bron: "Microsoft OLE DB Provider for SQL Server"

Interface: IID_IDBInitialize
Resultaat: 0x80004005 E_FAIL =

ISQLErrorInfo: [HY000] [0x00002afc]
IErrorInfo: [0x00002afc] ' kan geen SSPI-context genereren'

Bestand: D:\MDACTools\rowsetviewer\CBase.cpp
Regel: 1067

Oorzaak


Wanneer u SQLOLEDB roept de functie ConnectionGetSvrUser van de dbnetlib-bibliotheek, interpreteert het verkeerd deze functie geeft als resultaat een Boole-waarde. De functie ConnectionGetSvrUser is ontworpen om een void retourneren. Wat bevindt zich in het register EAX wordt daarom de geretourneerde waarde.


De functie ConnectionGetSvrUser wordt intern de functie gethostbyaddr . De functie gethostbyaddr verkrijgt de host-naam die overeenkomt met een bepaald IP-adres. Als de functie gethostbyaddr mislukt, wordt een teken nul EAX register. Dus retourneert de functie ConnectionGetSvrUser een waarde FALSE . Dit leidt tot een aanmeldingsfout op de computer met SQL Server 2000 SP3 server.


Oplossing


Een ondersteunde hotfix is beschikbaar bij Microsoft. Deze hotfix is echter alleen bedoeld voor het probleem dat wordt beschreven in dit artikel. Voer deze hotfix alleen uit op systemen waarop dit specifieke probleem zich voordoet.

Als de hotfix gedownload kan worden, is er een sectie 'Hotfix downloaden' aan het begin van dit Knowledge Base-artikel. Als deze sectie niet wordt weergegeven, dien dan een verzoek in bij Microsoft Customer Service and Support om de hotfix te verkrijgen.

Opmerking Als er andere problemen optreden of als probleemoplossing is vereist, moet u wellicht een apart serviceverzoek indienen. De normale ondersteuningskosten gelden voor extra ondersteuningsvragen en problemen die niet in aanmerking komen voor deze specifieke hotfix. Voor een volledige lijst met telefoonnummers van Microsoft Customer Service and Support of een afzonderlijk serviceverzoek maken, gaat u naar de volgende Microsoft-website:Opmerking Het formulier 'Hotfix kan worden gedownload' geeft de talen weer waarvoor de hotfix beschikbaar is. Als uw taal niet wordt weergegeven, is dit omdat een hotfix niet voor die taal beschikbaar is. Van de Engelse versie van deze hotfix heeft de bestandskenmerken (of hoger) die in de volgende tabel worden weergegeven. De datums en tijden voor deze bestanden worden weergegeven in coordinated universal time (UTC). Wanneer u de bestandsinformatie weergeeft, wordt deze naar lokale tijd geconverteerd. Het verschil tussen UTC en lokale tijd zoekt, gebruikt u het tabblad tijdzone in het onderdeel datum en tijd in het Configuratiescherm.

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

Tijdelijke oplossing


Om dit probleem te omzeilen, handmatig een hostvermelding op de clientcomputer het IP-adres waarmee u verbinding wilt maken.
  1. Start Windows Verkenner.
  2. Zoek het Hosts-bestand en open het bestand in Kladblok.

    Opmerking U kunt het bestand vinden in het pad %SystemRoot%\System32\Drivers\Etc.
  3. Voeg het volgende toe aan het einde van het bestand:
    Willekeurige IP De naam van de computer

    Opmerking Willekeurige IP is een tijdelijke aanduiding voor het IP-adres dat wordt gebruikt door een andere computer in het netwerk. Computernaam is een tijdelijke aanduiding voor de naam van de computer waarop SQL Server 2000 SP3 zijn uitgevoerd. Het Willekeurige IP IP-adres en de naam van de Naam van de Computer moeten door minimaal één spatie worden gescheiden.
  4. Klik in het menu Bestand op Opslaan.
  5. Sluit het bestand.

Status


Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Meer informatie


Stappen om het probleem te reproduceren

De dynamische IP-adres configureren

  1. Meld u aan als beheerder bij de computer waarop SQL Server 2000 SP3 wordt uitgevoerd.
  2. Dubbelklik in het Configuratiescherm op Netwerkverbindingen.
  3. Dubbelklik op de LAN-verbinding die u wilt wijzigen.
  4. Klik op Eigenschappenin het dialoogvenster Status van de verbinding lokaal gebied . Het dialoogvenster Eigenschappen voor lokale netwerkverbinding wordt weergegeven.
  5. Klik op Internet Protocol (TCP/IP)en klik vervolgens op Eigenschappenin het vak deze verbinding heeft de volgende onderdelen . Het dialoogvenster Eigenschappen voor Internet Protocol (TCP/IP) wordt weergegeven.
  6. Klik op automatisch een IP-adresen klik vervolgens op OK.
  7. Klik op sluitenin het dialoogvenster Eigenschappen voor lokale netwerkverbinding .

  8. Klik op sluitenin het dialoogvenster Status van de verbinding lokaal gebied .
  9. Klik op Start, klik op Uitvoeren, typ cmd en klik vervolgens op OK.
  10. Typ ping Computernaambij de opdrachtprompt en druk vervolgens op ENTER.

    Opmerking Computernaam is een tijdelijke aanduiding voor de naam van de computer waarop SQL Server 2003

    U ontvangt een foutbericht dat lijkt op het volgende:
    Pingen naar de Naam van de Computer [Dynamische IP] met 32 bytes aan gegevens:

    Antwoord van Dynamische IP: bytes = 32 time < 1ms TTL = 128
    Antwoord van Dynamische IP: bytes = 32 time < 1ms TTL = 128
    Antwoord van Dynamische IP: bytes = 32 time < 1ms TTL = 128

    Ping-statistieken voor Dynamische IP:
    Pakketten: Verzonden = 4, ontvangen = 4, verloren = 0 (0% verlies),
    Retourtijd bij benadering in milliseconden:
    Minimum = 0ms, Maximum = 0ms, Gemiddelde = 0ms
    Opmerking Dynamische IP is een tijdelijke aanduiding voor de dynamische IP van de computer Computernaam .
  11. Typ exiten druk op ENTER om de opdrachtprompt af te sluiten.
  12. Herhaal stap c tot en met e. klikt u op het volgende IP-adres gebruiken.
  13. Typ in het vak IP-adres , het Dynamische IP- adres.

    Opmerking Dynamische IP is een tijdelijke aanduiding voor de dynamische IP van de computer Computernaam .
  14. Typ in het vak subnetmasker het subnetmasker voor het netwerk.
  15. Typ in het vak standaardgateway het IP-adres van de computer of het apparaat op uw netwerk die het netwerk is verbonden met een ander netwerk of Internet.
  16. Typ in het vak voorkeurs-DNS-server het IP-adres van de computer die hostnamen naar IP-adressen herleidt.
  17. Typ in het vak alternatieve DNS-server het IP-adres van de DNS-computer die u gebruiken wilt als de voorkeurs-DNS (Domain Name System)-server niet beschikbaar is.
  18. Klik op Geavanceerd. De Geavanceerde TCP/IP-instellingen wordt weergegeven.
  19. Onder IP-adressen, klikt u op toevoegen. Het dialoogvenster TCP/IP-adres wordt weergegeven.
  20. Typ in het vak IP-adres Willekeurig IP- adres.

    Opmerking Willekeurige IP is een tijdelijke aanduiding voor het IP-adres dat wordt gebruikt door een andere computer in het netwerk.
  21. In het vak subnetmasker het subnetmasker voor het netwerk en klik vervolgens op toevoegen.
  22. In de Geavanceerde TCP/IP-instellingen, klik op OK.
  23. Klik op OKin de Eigenschappen voor Internet Protocol (TCP/IP) . Klik op sluitenin het dialoogvenster Eigenschappen voor lokale netwerkverbinding . Klik op sluitenin het dialoogvenster Status van de verbinding lokaal gebied .

Verbinding maken met de computer met SQL Server 2000 SP3 server vanaf een clientcomputer via SQL Query Analyzer

  1. Start SQL Query Analyzer. Het dialoogvenster verbinding maken met SQL Server wordt weergegeven.
  2. Typ in het vak SQL Server Willekeurig IP.

    Opmerking Willekeurige IP is een tijdelijke aanduiding voor het IP-adres dat wordt gebruikt door een andere computer in het netwerk.
  3. Klik op verbinding maken via, Windows-verificatie.
  4. Klik op OK. U ziet het foutbericht dat wordt vermeld in de sectie 'Symptomen'.

Verbinding maken met de computer met SQL Server 2000 SP3 server vanaf een clientcomputer via de rijenset Viewer

  1. De rijenset Viewer gestart. De Microsoft OLE DB-RowsetViewer -venster verschijnt.
  2. Klik in het menu bestand op Volledige verbinden. Er verschijnt het dialoogvenster Volledige Connect - geen beschrijving beschikbaar .
  3. Klik in de lijst Provider SQLOLEDB onder verbinding.
  4. Typ in het vak gegevensbron Willekeurig IP onder bron.

    Opmerking Willekeurige IP is een tijdelijke aanduiding voor het IP-adres dat wordt gebruikt door een andere computer in het netwerk.
  5. Aanmelding, klik op DBPROMPT_NOPROMPT in de lijst met vragen .
  6. Klik op Geavanceerdop het tabblad Eigenschappen . Het dialoogvenster IDBProperties::SetProperties wordt weergegeven.
  7. Schakel het selectievakje DBPROP_AUTH_INTEGRATED in en klik vervolgens op OK.
  8. Klik op OKin het dialoogvenster Volledige Connect - geen beschrijving beschikbaar . U ziet het foutbericht dat wordt vermeld in de sectie 'Symptomen'.
Opmerking De client-computer en de computer met SQL Server 2000 SP3 server moeten zich in hetzelfde domein. Wanneer u verbinding maakt met de SQL Server 2000 SP3 server-computer met de Willekeurige IP vanaf dezelfde computer, verbinding wordt gemaakt met de computer met SQL Server 2000 SP3 server zonder fouten.

Referenties


Ga naar de volgende websites van Microsoft Developer Network (MSDN) voor meer informatie:
Overzicht van gereedschappen voor OLE DB-Test
http://msdn2.microsoft.com/en-us/library/ms721219.aspx
Voor meer informatie klikt u op het volgende artikel in de Microsoft Knowledge Base:

323444 het wijzigen van het IP-adres van een netwerkadapter in Windows Server 2003

Voor meer informatie klikt u op het volgende artikel in de Microsoft Knowledge Base:

824684 beschrijving van de standaardterminologie die wordt gebruikt om software-updates voor Microsoft te beschrijven