Korriger: Du får feilmeldingen "Kan ikke generere SSPI-kontekst" når du prøver å koble til en SQL Server 2000 SP3-server-datamaskin

Sammendrag

Når du prøver å koble til en datamaskin med Microsoft SQL Server 2000 Service Pack 3 (SP3)-server fra en klientdatamaskin, mislykkes tilkoblingen med en feilmelding hvis servernavnet ikke kan løses fra Internet Protocol (IP)-adressen. Dette skjer fordi SQLOLEDB tolker feilaktig verdien som returneres av funksjonen ConnectionGetSvrUser i dbnetlib.

  • En hurtigreparasjonen løser dette problemet.

  • Hvis du vil omgå dette problemet, må du manuelt opprette en host-oppføring for IP-adressen i klienten.

  • For å reprodusere problemet, kan du opprette og konfigurere dynamiske IP-adressen til serveren, og deretter koble til serveren ved hjelp av SQL Query Analyzer eller Radsettet Viewer fra en klientdatamaskin.

Symptomer

Når du prøver å koble en klientdatamaskin til en datamaskin med Microsoft SQL Server 2000 SP3-server, servernavnet kan ikke løses fra Internet Protocol (IP)-adressen, og tilkoblingen mislykkes.

Når du kobler til SQL Server 2000 SP3-server-maskinen med SQL Query Analyzer, får du følgende feilmelding:

Server: Msg 11004, nivå 16 State 1
[Microsoft] [ODBC SQL Server Driver] Kan ikke generere SSPI-kontekst

Når du bruker på SQL Server OLE DB Provider (SQLOLEDB) til å koble til en SQL Server 2000 server-datamaskin ved hjelp av Radsettet Viewer, får du følgende feilmelding:

Kilde: "Microsoft OLE DB Provider for SQLServer"

Grensesnitt: IID_IDBInitialize
Resultat: 0x80004005 = E_FAIL

ISQLErrorInfo: [HY000] [0x00002afc]
GetErrorInfo: [0x00002afc] "kan ikke generere SSPI-kontekst"

Fil: D:\MDACTools\rowsetviewer\CBase.cpp
Linje: 1067

Årsak

Når SQLOLEDB kaller funksjonen ConnectionGetSvrUser på dbnetlib-biblioteket, tolker det feilaktig som denne funksjonen returnerer en boolsk verdi. Funksjonen ConnectionGetSvrUser er utformet for å returnere en void. Det ligger i EAX-journalen blir derfor returverdien.


ConnectionGetSvrUser -funksjonen kaller internt gethostbyaddr -funksjonen. Gethostbyaddr -funksjonen henter vertsnavnet som samsvarer med en bestemt IP-adresse. Hvis det mislykkes gethostbyaddr -funksjonen, returnerer null tegn til kassen EAX. Derfor returnerer ConnectionGetSvrUser -funksjonen verdien Usann . Dette fører til en Mislykket pålogging til SQL Server 2000 SP3-server-datamaskinen.


Løsning

En støttet hurtigreparasjon er tilgjengelig fra Microsoft. Denne hurtigreparasjonen er imidlertid ment å løse problemet som er beskrevet i denne artikkelen. Bruk denne hurtigreparasjonen bare på systemer som har dette bestemte problemet.

Hvis hurtigreparasjonen er tilgjengelig for nedlasting, ligger den under delen "Hotfix Download Available" øverst i denne Knowledge Base-artikkelen. Hvis denne delen ikke vises, kan du sende en forespørsel til Microsofts kundeservice og kundestøtte for å få hurtigreparasjonen.

Obs! Hvis det oppstår andre problemer, eller hvis feilsøkingstips, må du kanskje opprette en separat forespørsel om. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av denne oppdateringen. For en fullstendig liste over telefonnumre for Microsofts kundeservice og kundestøtte eller opprette en separat forespørsel om, kan du gå til følgende Microsoft-webområde:

http://support.microsoft.com/contactus/?ws=supportObs! Hotfix Download Available-skjemaet viser språkene som hurtigreparasjonen er tilgjengelig på. Hvis du ikke ser språket ditt, er det fordi en hurtigreparasjon ikke er tilgjengelig for dette språket. Er den engelske versjonen av denne hurtigreparasjonen har filattributtene (eller senere) som er oppført i følgende tabell. Datoene og klokkeslettene for disse filene er oppført i coordinated universal time (UTC). Når du viser filinformasjonen, konverteres den til lokal tid. Hvis du vil finne forskjellen mellom UTC og lokal tid, bruker du kategorien tidssone i dato og klokkeslett-verktøyet i Kontrollpanel.

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

Løsning

Hvis du vil omgå dette problemet, må du manuelt opprette en vertsoppføring på klientdatamaskinen for IP-adressen som du vil koble til.

  1. Start Windows Utforsker.

  2. Finne Hosts-filen, og åpne deretter filen i Notisblokk.

    Obs! Du kan finne filen i %SystemRoot%\System32\Drivers\Etc banen.

  3. Legg til følgende på slutten av filen:
    Tilfeldig IP - Navnet på datamaskinen

    Obs! Tilfeldig IP er en plassholder for IP-adresse som ikke er i bruk av en annen datamaskin i nettverket. Datamaskinnavnet er en plassholder for navnet på datamaskinen som har SQL Server 2000 SP3 kjører på den. Tilfeldig IP IP-adressen og Datamaskinnavnet navnet må være atskilt av minst ett mellomrom.

  4. Klikk Lagrefil -menyen.

  5. Lukk filen.

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Hvis du vil ha mer informasjon

Fremgangsmåte for å gjenskape problemet

Konfigurere dynamiske IP-adressen

  1. Logg på som administrator på datamaskinen som kjører SQL Server 2000 SP3.

  2. Dobbeltklikk Nettverkstilkoblingeri Kontrollpanel.

  3. Dobbeltklikk den lokale tilkoblingen som du vil endre.

  4. Klikk Egenskaperi dialogboksen Status for lokale området . Dialogboksen Egenskaper for lokal tilkobling vises.

  5. I denne tilkoblingen bruker følgende elementer -boksen klikker du Internett-protokoll (TCP/IP). Dialogboksen Egenskaper for Internet Protocol (TCP/IP) vises.

  6. Velger du motta en IP-adresse automatisk, og klikk deretter OK.

  7. Klikk Lukki dialogboksen Egenskaper for lokal tilkobling .


  8. Klikk Lukki dialogboksen Status for lokale området .

  9. Klikk Start, klikk Kjør, Skriv inn cmd, og klikk deretter OK.

  10. Ved ledeteksten, Skriv inn ping Datamaskinnavnet, og trykk deretter ENTER.

    Obs! Datamaskinnavnet er en plassholder for navnet på datamaskinen som kjører SQL Server 2003

    Du får en feilmelding som ligner på følgende:

    Pinger Datamaskinnavn [Dynamisk IP] med 32 byte med data:

    Svar fra Dynamiske IP: byte = 32 time < 1 ms TTL = 128
    Svar fra Dynamiske IP: byte = 32 time < 1 ms TTL = 128
    Svar fra Dynamiske IP: byte = 32 time < 1 ms TTL = 128

    Ping-statistikk for Dynamisk IP:
    Pakker: Sendte = 4, mottatt = 4, mistet = 0 (0% tap)
    Omtrentlig tur ganger i milli-sekunder:
    Minimum = 0ms, maksimum = 0ms, gjennomsnitt = 0ms
    Obs! Dynamisk IP er en plassholder for dynamisk IP på datamaskinen som Navn på datamaskinen .

  11. Hvis du vil avslutte MS-DOS-ledetekst, Skriv inn exit, og trykk deretter ENTER.

  12. Gjenta trinn c-e. Klikk Bruk følgende IP-adresse.

  13. Skriv inn Dynamisk IP- adresse i IP-adresse -boksen.

    Obs! Dynamisk IP er en plassholder for dynamisk IP på datamaskinen som Navn på datamaskinen .

  14. Skriv inn nettverksmasken for nettverket i boksen Nettverksmaske .

  15. I standard gateway -boksen skriver du inn IP-adressen til datamaskinen eller enheten på nettverket som kobler nettverket til et annet nettverk eller Internett.

  16. I Foretrukket DNS-server -boksen skriver du inn IP-adressen til datamaskinen som løser vertsnavn til IP-adresser.

  17. I alternativ DNS-server -boksen skriver du inn IP-adressen til DNS-datamaskinen som du vil bruke hvis den foretrukne DNS (Domain Name System)-serveren blir utilgjengelig.

  18. Klikk Avansert. Avanserte TCP/IP-innstillinger vises.

  19. Klikk Legg tilunder IP-adresser. TCP/IP-adresse -dialogboksen vises.

  20. Skriv inn Tilfeldig IP- adresse i IP-adresse -boksen.

    Obs! Tilfeldig IP er en plassholder for IP-adresse som ikke er i bruk av en annen datamaskin i nettverket.

  21. I boksen Nettverksmaske skriver du inn nettverksmasken for nettverket.

  22. I Avanserte TCP/IP-innstillinger, klikker du OK.

  23. Klikk OKi Egenskaper for Internett-protokoll (TCP/IP) . Klikk Lukki dialogboksen Egenskaper for lokal tilkobling . Klikk Lukki dialogboksen Status for lokale området .

Koble til SQL Server 2000 SP3-server-datamaskinen fra en klientdatamaskin via SQL Query Analyzer

  1. Starte SQL Query Analyzer. Koble til SQL Server -dialogboksen vises.

  2. I SQL Server -boksen skriver du inn Tilfeldig IP.

    Obs! Tilfeldig IP er en plassholder for IP-adresse som ikke er i bruk av en annen datamaskin i nettverket.

  3. Under koble til med, klikker du Windows-godkjenning.

  4. Klikk OK. Ser du feilmeldingen som er nevnt i delen "Symptomer".

Koble til SQL Server 2000 SP3-server-datamaskinen fra en klientdatamaskin via Radsettet Viewer (Fremviser)

  1. Start Radsettet Viewer. Microsoft OLE DB RowsetViewer -vinduet vises.

  2. Klikk Koble til Fullfil -menyen. Full Connect - ingen beskrivelse tilgjengelig -dialogboksen vises.

  3. I Leverandør -listen klikker du SQLOLEDB under tilkobling.

  4. I DataSource -boksen skriver du inn Tilfeldig IP under kilde.

    Obs! Tilfeldig IP er en plassholder for IP-adresse som ikke er i bruk av en annen datamaskin i nettverket.

  5. Under pålogging, klikker du DBPROMPT_NOPROMPT i listen Spør .

  6. Klikk Avanserti kategorien Egenskaper . Dialogboksen IDBProperties::SetProperties vises.

  7. Klikk for å merke av for DBPROP_AUTH_INTEGRATED , og klikk deretter OK.

  8. Klikk OKi dialogboksen Full Connect - ingen beskrivelse tilgjengelig . Ser du feilmeldingen som er nevnt i delen "Symptomer".

Obs! Klientdatamaskinen og serverdatamaskinen for SQL Server 2000 SP3 må være i samme domene. Når du prøver å koble til SQL Server 2000 SP3-server-datamaskinen med Tilfeldig IP fra samme datamaskin, kobler den til serverdatamaskinen for SQL Server 2000 SP3 uten feil.

Referanser

Hvis du vil ha mer informasjon, kan du gå til følgende webområder for Microsoft Developer Network (MSDN):

ConnectionGetSvrUser
http://msdn2.microsoft.com/en-us/library/Aa470056.aspx

OLE DB testverktøy oversikt
http://msdn2.microsoft.com/en-us/library/ms721219.aspxHvis du vil ha mer informasjon, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:

323444 hvordan du endrer IP-adressen til et nettverkskort i Windows Server 2003

Hvis du vil ha mer informasjon, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:

824684 beskrivelse av standardterminologien som brukes til å beskrive oppdateringer av Microsoft-programvare

Trenger du mer hjelp?

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Microsoft Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×