Slik feilsøker du løse tilkoblinger i SQL Server


Sammendrag


Når en Microsoft SQL Server-klient kobler fra en SQL server, skal tilkoblingsprosessen fjernes på serversiden. Hvis tilkoblingen prosessene ikke fjernes for noen grunn, kan de bli "løse" eller "ghost" prosesser. Disse prosessene kan bruke opp verdifulle ressurser som låser og brukertilkoblinger. De isolerte prosessene skyldes vanligvis feil avslutning av klientprogrammer og nettverksrelaterte problemer, og løsninger krever vanligvis feilsøking klientprogrammer og fin - lydjustering nettverkskonfigurasjoner.

Hvis du vil ha mer informasjon


Husk følgende når du feilsøker dette problemet:
  • SQL Server som et program ikke og bør ikke proaktivt granske klienttilkobling for å fastslå gjeldende status. Lavere nivå mellom prosess kommunikasjon (IPK), for eksempel navngitte datakanaler, IPX/SPX eller TCP/IP sockets eller er ansvarlig for behandling av klienttilkoblinger.
  • En IPC har vanligvis en egen mekanisme for å administrere klient-tilkoblinger. Når klienttilkoblinger blir utilgjengelig for en viss tid, vil vanligvis på Windows NT Server-datamaskinen enten oppdage dette ved å sende "keep alive"-sonder, eller fjern forbindelsen når den er inaktiv for en konfigurert mengde tid. "Keep-alive"-pakker sendes imidlertid ikke som standard av et program. Programmet trenger for å aktivere denne funksjonen på sine tilkoblinger.
  • Under visse situasjoner som klienten generell beskyttelsesfeil kan fremdeles klienten svarer på serveren sonder selv om programmet er allerede død. I så fall kan på Windows NT Server-datamaskinen føre til at denne klienttilkoblingen i det uendelige, så lenge klienten ikke er avsluttet.
  • Hvis en datamaskin med Windows NT Server ikke lukkes en inaktiv tilkobling for en eller annen grunn, antar SQL Server rightfully denne tilkoblingen er aktiv, og derfor fjerner ikke den.
  • Hvis Windows NT Server-datamaskinen har lukket tilkoblingen, men klientprosessen fremdeles finnes på SQL-serveren som angitt av sp_who, kan det indikere et problem med administrasjon av SQL Server-tilkobling. I dette tilfellet bør du arbeide med din primære kundestøtteleverandør å løse dette problemet.
Hvis du tror det finnes isolerte prosesser på SQL Server, følger fremgangsmåten for å feilsøke problemet:
  1. Identifisere foreldreløse prosessene ved hjelp av sp_who, som kan fortelle deg hvilke programmer som er knyttet til disse prosessene gjennom vertsnavn.
  2. Når du har identifisert disse isolerte prosesser, kan du velge å enten ignorere dem hvis de ikke har noen låst eller bruker mange tilkoblinger eller kill KILL for SQL Server-kommandoen.
  3. Ta kontakt med programbrukere for en uriktig prosedyrene for lukking programmer som varm eller kald omstart av arbeidsstasjoner uten å avslutte programmene først. Kontroller om det finnes logg for arbeidsstasjonen blir ustabilt, for eksempel en generell beskyttelsesfeil, og så videre. Korrigere disse uriktig prosedyrer eller stabilitetsproblemer hvis de finnes.
  4. Kontroller om IPC-økt er aktiv på Windows NT Server-datamaskin der du kjører SQL Server. Kommandoene er forskjellige avhengig av IPK du bruker. For eksempel hvis du bruker navngitte datakanaler, er kommandoen "NET SESSION" eller "NET-filer"; Hvis det er en TCP/IP sockets tilkobling, kan du bruke "NETSTAT" til å vise aktive TCP-økter; Hvis det IPX/SPX må du kanskje bruke den Ytelsesmåler til å overvåke "Tilkoblinger åpne" for "NWLink SPX."
  5. Hvis IPC-økter som fortsatt er aktive på Windows NT Server-datamaskin, er det helt normalt at SQL Server til å holde disse prosessene for tilkoblingen. Når Windows NT løser IPC-økter, SQL Server vil bli varslet, og rydde opp tilkoblingen prosessene i henhold til dette. Du vil kanskje kunne justere visse parametere for Windows NT for å forkorte tidsperioden som Windows NT må vente før du tømmer opp død økter.


    På nytt, avhengig av IPK du bruker, parameterne involvert, er svært forskjellige. For mer informasjon, klikker du artikkelnummeret nedenfor hvordan du endrer disse registerinnstillingene for å samsvare med de som er nevnt nedenfor for å vise artikkelen hvordan du endrer disse registerinnstillingene for å samsvare med de som er nevnt nedenfor i Microsoft Knowledge Base:

    120642 TCP/IP og NetBT-konfigurasjonsparametere for Windows 2000 eller Windows NT

    99745 innstilling av NWLINK-registerparametere

    • Navngitte datakanaler: Navngitte datakanaler er implementert i SMB (Servermeldingsblokk) lag oppå andre transport-protokoller som TCP/IP, NetBEUI eller NWLink IPX/SPX. Et tynt lag kalt NetBIOS er vanligvis implementert mellom SMB og transportlaget. Derfor har en praktisk måte å justere hvor lenge en ikke svarer Named Pipes økt skal vente før den lukkes er gjennom å justere KeepAlive-parameterne for det aktuelle NetBIOS-laget. For TCP/IP, NetBIOS-lag som er involvert er NBT (NetBIOS over TCP), og parameteren involvert er SessionKeepAlive i følgende registernøkkel:

      KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters

      Hvis protokollen som brukes er NWlink IPX/SPX, er involvert parameterne KeepAliveCount og KeepAliveTimeout i følgende registernøkkel:

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWNBLink\Parameters

      Vær oppmerksom på at enkelte implementeringer for navngitte datakanaler over NWLink kan hoppe over NetBIOS-laget (DirectHosting), som betyr NWNBlink NetBIOS-parameterne ovenfor ikke gjelder.

    • TCP/IP Sockets: Windows NT-Server sender regelmessig "Behold testpakker til klienter, og klienter er forventet å svare. Hvis klienten ikke svarer til disse pakker en eller annen grunn, fjerner Windows NT TCP-økt etter prøver for et angitt antall ganger. Parameterne som er involvert er KeepAliveInterval KeepAliveTime og TcpMaxDataRetransmissions i følgende registernøkkel:

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

    • IPX/SPX: Lignende til TCP/IP, Windows NT Server jevnlig sender "keep alive" pakker og klienter svare. Windows NT tømmer SPX tilkoblinger hvis det ikke får svar etter sending av et angitt antall "keep alive"-pakker. Parameterne som er involvert er KeepAliveCount og KeepAliveTimeout i følgende registernøkkel:

      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWLnkSPX\Parametes

    Vær oppmerksom på at hvis "keep alive"-parametere for IPK din er konfigurert til å aldri tidsavbrudd, Windows NT holder IPC øktene i ubegrenset tid, selv om klientene er helt lukket. I dette tilfellet holder SQL Server disse klientprosesser ubestemt tid også, som er forventet.


    Hvis du vil ha mer informasjon om parameterne, kan du se dokumentasjonen for Windows NT eller Windows NT Resource Kit. Hvis du tror Windows NT Server-datamaskinen ikke Fjern opp disse økter i henhold til parametere for konfigurasjon, kan du kontakte kundestøtteleverandøren primære Windows NT for å få hjelp.
  6. Hvis økten IPC finnes ikke lenger på Windows NT Server-datamaskinen, men SQL Server holder fremdeles klientprosessen som vist ved sp_who, kan du bruke kommandoen KILL for å rydde opp prosessen som en midlertidig løsning, og kontakt din primære kundestøtteleverandør for SQL Server for trenger mer hjelp.
Hvis du vil ha mer informasjon om dette emnet i forhold til SQL Server 2000, kan du se emnet "Løse økter" i SQL Server Books Online.