Logige sisse Microsofti kontoga
Logige sisse või looge konto.
Tere!
Valige mõni muu konto.
Teil on mitu kontot
Valige konto, millega soovite sisse logida.

Kokkuvõte

SQL serveri ODBC-draiver, SQL serveri OLE DB pakkuja või System.Data.SqlClient Hallatav pakkuja kasutamisel saate keelata ühenduse ühiskasutus vastava rakendusliideseid (API-sid) abil. Ühendamise keelamisel aluseks SQL Server võrgu Raamatukogu koormuse võib suurendada teie rakendus sageli avaneb ja sulgub ühendusi. Selles artiklis kirjeldatakse teatud TCP/IP sätted, mida tuleb kohandada sellistel tingimustel.

Lisateabe saamiseks

Väljalülitamine ühendamine võib põhjustada aluseks SQL serveri võrgu draiveri kiiresti avada ja sulgeda uue pistikupesa ühenduste arvutisse, kus töötab SQL Server. Kui peate muutma TCP/IP soklit vaikesätted operatsioonisüsteemi ja arvuti, kus töötab SQL serveri puhul kõrgem pinge.

Pange tähele, et see artikkel käsitleb ainult sätteid, mis mõjutavad SQL Server võrgu Raamatukogu TCP/IP protokolli kasutamisel. Ühendamise väljalülitamist võib põhjustada ka teiste SQL serveri protokollide nagu marsruutimine pinge seotud probleeme, kuid see artikkel ei käsitle selle teema. See artikkel on mõeldud ainult kogenud kasutajatele. Kui mõistate selle artikli teemad, soovitab Microsoft TCP/IP sockets hea raamat näete.

Pange tähele, et Microsoft soovitab alati kasutada ühendamine SQL serveri draivereid. Kasutades ühendamise oluliselt parandab üldist jõudlust kliendi poolel ja SQL serveri SQL serveri draiverite kasutamisel. Kasutades ühendamise ka oluliselt vähendab võrguliiklust arvutisse, kus töötab SQL Server. Näiteks näidis test, mida kasutatakse 20 000 SQL Serveri ühenduse avaneb ja sulgub koondamine lubatud kasutada umbes 160 TCP/IP võrgu paketid kokku võrgu tegevust 23,520 baiti. Koos ühiskasutus keelatud, sama proovi katse loodud 225,129 TCP/IP võrgu paketid, kokku 27,209,622 bytes võrgu tegevust.

Pange tähele, et kui näete neid pinge seotud TCP/IP soklit probleemid SQL Server võrgu teegid, võidakse kuvada üks või mitu järgmistest tõrketeadetest kui proovite luua ühendust arvutiga, kus töötab SQL Server:

SQL Server ei ole olemas või juurdepääs keelatud

Ajalõpp on aegunud

Üldine võrgutõrge

TCP pakkuja: Lubatud ainult üks kasutus iga sokliaadressi (protokoll/võrguaadress/port) on tavaliselt.

Pange tähele, et saate ka see teade kuvatakse veateade kui muid probleeme esineb SQL Server; Näiteks võidakse kuvada tõrketeateid kui kaugarvutiga, kus töötab SQL Server on välja lülitatud, kui kaugarvutiga, kus töötab SQL Server ei kuula TCP/IP Sockets üldse, kui võrguühenduse olemasolul arvutisse, kus töötab SQL Server on rikutud, kuna võrgukaabel tõmmatud või kui teil on probleeme DNS-i lahendus. Põhimõtteliselt midagi, mis võib põhjustada kliendi Ava TCP/IP soklit arvutisse, kus töötab SQL Server võib põhjustada ka tõrketeateid. Siiski pistikupesa pinge seotud teemaga probleem ilmneb vahelduvalt kui selle pinge tõuseb ja langeb. Arvuti võib kesta tund koos tõrkeid, siis tõrge ilmneb üks või kaks korda ja arvuti siis töötab mitu mitu tundi vigu ei leitud. Ka, kui teil on probleem, üldine ühendamine SQL Server töötab üks vahetu, nurjub järgmise, siis töötab edasi kohe uuesti. Teiste sõnadega, sokkel pinge seotud probleemid ilmnevad tavaliselt hooti, kuid tõeline võrguühenduse probleemid SQL Server tavaliselt ilmnevad hooti.

Kaks peamist pinge seotud probleemid tavaliselt tekkida, kui keelate ühendamine SQL Server TCP/IP-protokolli kasutamisel: anonüümne pordid võib otsa klientarvutis või ületate WinsockListenBacklog vaikesäte arvutis, kus töötab SQL Server.


Anonüümne portide kohta lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks artiklinumbrit:

319502 PRB: "WSAEADDRESSINUSE" tõrketeade, kui Anonüümne pordi kaudu ühenduse loomisel pärast IMAP ühenduse limiidi suurendamine

MaxUserPort ja TcpTimedWaitDelay sätete reguleerimine

Pange tähele, et MaxUserPort ja TcpTimedWaitDelay sätted kehtivad ainult kliendi arvutisse, kus on kiiresti avamine ja sulgemine kaugarvutiga, kus töötab SQL Server ja mis ei kasuta ühenduse ühiskasutus. Näiteks need sätted on mõeldud Internet Information Services (IIS) serveris, mis on teeninduse sissetuleva HTTP päringuid palju ja mis on avamine ja sulgemine kaugarvutiga, kus töötab SQL Server ja mis kasutab TCP/IP protokoll ühiskasutus keelatud. Kui ühiskasutus on lubatud, pole MaxUserPort ja TcpTimedWaitDelay sätteid reguleerida.

TCP/IP protokolli kasutamisel luua ühendust arvutiga, kus töötab SQL Server aluseks SQL Server võrgu Raamatukogu avaneb TCP/IP soklit arvutisse, kus töötab SQL Server. See sokkel avanemisel SQL Server võrgu Raamatukogu ei luba SO_REUSEADDR TCP/IP soklit valik. SO_REUSEADDR sokli seadistamise kohta lisateabe saamiseks vaadake teemat "Setsockopti kõnes määrati" rakenduses Microsoft Developer Networki (MSDN).


Pange tähele, et SQL Server võrgu Raamatukogu konkreetselt lubada SO_REUSEADDR TCP/IP soklit võimalus turvalisuse tagamiseks. SO_REUSEADDR lubamisel pahatahtlik kasutaja hijack kliendi port SQL serveri ja kliendi saatnud pääseda juurde arvuti, kus töötab SQL serveri mandaadi kasutamine. Vaikimisi, kuna SQL Server võrgu Raamatukogu Lubage suvand SO_REUSEADDR sokli iga kord, kui avate ja sulgege pesa kaudu SQL Server võrgu Raamatukogu kliendi poolel sokkel läheb TIME_WAIT olekus neli minutit. Kui olete kiiresti avamise ja sulgemise SQL serveri võrguühenduste üle TCP/IP ühiskasutus keelatud, on kiiresti avamine ja sulgemine TCP/IP sockets. Teiste sõnadega iga SQL serveri ühendus on üks TCP/IP soklit. Kui kiiresti avada ja sulgeda 4000 sockets vähem kui nelja tunni jooksul, jõuate maksimaalselt vaikesäte kliendi anonüümne pordid ja uue pistikupesa ühenduse katsed nurjuvad kuni olemasoleva komplekti TIME_WAIT sockets ajalõpp.

Kliendi poolel tuleb suurendada MaxUserPort ja TcpTimedWaitDelay sätteid, mida on arutatud Q319502, kui teil on ühiskasutus keelatud. Nende väärtuste sätted määratleb mitu SQL Serveri ühenduse avaneb ja sulgub toimuda kliendi poolel. Võite uurida, kui palju kliendi pordid on TIME_WAIT olekus klientarvutis Netstat tööriista abil. Käitada netstat -n lippu järgmiselt ja kliendi sockets SQL serveri IP-aadress, mis on TIME_WAIT olekus arvu. Selles näites kaugarvutiga, kus töötab SQL serveri IP-aadress on 10.10.10.20, kliendi arvuti IP-aadress on 10.10.10.10 ja kolm kehtestatud ka kaks ühendusi on TIME_WAIT olekus:

C:\>netstat -n
Active Connections

Proto Local Address Foreign Address State
TCP 10.10.10.10:2000 10.10.10.20:1433 ESTABLISHED
TCP 10.10.10.10:2001 10.10.10.20:1433 ESTABLISHED
TCP 10.10.10.10:2002 10.10.10.20:1433 ESTABLISHED
TCP 10.10.10.10:2003 10.10.10.20:1433 TIME_WAIT
TCP 10.10.10.10:2004 10.10.10.20:1433 TIME_WAIT

Kui käivitate netstat n ja te näete, et ligikaudu 4000 ühenduste IP-aadressi target arvuti, kus töötab SQL Server on TIME_WAIT olekus, nii suurendamiseks MaxUserPort vaikesäte ja vähendada TcpTimedWaitDelay sätteid nii, et teil otsa kliendi anonüümne pordid. Näiteks saate seada sätte MaxUserPort 20000 ja seadke sätte TcpTimedWaitDelay 30. Madalamaks TcpTimedWaitDelay tähendab, et vähem aega ootama selle sockets TIME_WAIT olekus. Suurema MaxUserPort säte tähendab, et teil on rohkem sockets TIME_WAIT olekus.

Pange tähele, et kui MaxUserPort või TcpTimedWaitDelay sätte muutmiseks peate Microsoft Windowsi uue sätte jõustumiseks. MaxUserPort ja TcpTimedWaitDelay sätted on kliendi arvutisse, mis on arvuti, kus töötab SQL Server üle TCP/IP sockets suhtlemisel. Need sätted ei ole mingit mõju, kui nad on arvutis, kus töötab SQL Server, kui teete kohaliku TCP/IP pistikupesa ühenduste kohalikku arvutisse, kus töötab SQL Server.

Märkus. Kui MaxUserPort sätte muutmiseks soovitame reserveerida port 1434 kasutamiseks, SQL Serveri brauser teenuse (sqlbrowser.exe). Selle kohta lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks järgmist artiklinumbrit:

812873 kuidas endale mitmesuguseid ajutised pordid arvutis, milles töötab Windows Server 2003 või Windows 2000 Server

WinsockListenBacklog sätte reguleerimine

SQL serveri seotud Registrisätte kohta lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artikli kuvamiseks artiklinumbrit:

154628 INF: SQL-i logid 17832 TCP\IP ühenduse kohta
Kui SQL serveri võrgu Raamatukogu kuulamispordi TCP/IP sockets, SQL Server võrgu Raamatukogu kasutab seda kuulata Winsock API. Teine parameeter on kuulata API on lubatud sokkel mahajäämus. See mahajäämus tähistab maksimaalse pikkuse järjekorras, kuni ühendused on listener. Kui järjekorra pikkus ületab selle maksimaalne lubatud pikkus, lükkab SQL Server võrgu Raamatukogu rohkem TCP/IP soklit Ühenduskatsete kohe. Lisaks SQL Server võrgu Raamatukogu saadab ACK + RESET pakett.

SQL Server 2000 kasutab vaikimisi kuulata mahajäämus säte 5. See tähendab, et arvuti, kus töötab SQL Server läheb väärtus 5 mahajäämus parameeter, et kuulata Winsock API on kuulata API seab TCP/IP protokoll kuulamise Teemad arvutis, kus töötab SQL Server. Kohandage WinsockListenBacklog registrivõtme selle parameetri edasi teise väärtuse määramiseks. Alates SQL Server 2005, võrgu Raamatukogu läheb väärtus SOMAXCONN mahajäämus sätteks on kuulata API. SOMAXCONN võimaldab Winsock pakkuja selle sätte maksimaalne mõistliku väärtuse seadmiseks. Seetõttu on WinsockListenBacklog registrivõtme enam kasutada või vajalik SQL Server 2005.

Mahajäämus, milles töötab järgmiselt: Oletame, et suvalisi teenus ei kuula sissetulevaid TCP/IP soklit taotlusi. Kui seate sätte mahajäämus 5 ja pidevalt streaming palju pistikupesa ühenduse taotlusi, teenus ei pruugi nii kiiresti kui nad tulevad sissetuleva päringutele reageerida. Sellest hetkest TCP/IP socket layer järjekorrad nende sissetulevate taotluste mahajäämus järjekord ja teenus hiljem tõmmake välja selle järjekorra taotlusi ja sissetuleva pistikupesa ühenduse loomise taotluse töötlemiseks. Pärast järjekorra täitub, lükkab TCP/IP socket layer kohe täiendavaid sokli taotlused, mis tulevad saates ACK + RESET paketi klient. Suurendamine mahajäämus järjekorra suurus kasvab arv kuni sokkel ühendus taotleb TCP/IP socket layer järjekorrad enne taotlused on tagasi lükatud.

Arvestage, et WinsockListenBacklog säte on teatud SQL Server. SQL serveri püüab lugeda Registrisätte SQL serveri teenus esmalt käivitumisel. Kui seade ei ole, kasutatakse vaikimisi 5. Kui registri säte on olemas, SQL Server loeb sätte ja kasutab esitatud väärtust nagu mahajäämus säte kui WinSock API kuulata nimetatakse nagu TCP/IP soklit kuulamise teemad on seatud üles sees SQL Server.

Kindlaks teha, kui kasutate selle probleemi, saate käitada Network Monitor jälgi kliendi või arvutis, kus töötab SQL Server ja vaadake sokli ühendus nõuab, et koos ACK + RESET kohe tagasi. Kui uurite TCP/IP pakette Network Monitor, kuvatakse paketi järgmised, kui see probleem esineb.

Frame: Base frame propertiesETHERNET:  EType = Internet IP (IPv4) 
IP: Protocol = TCP - Transmission Control; Packet ID = 40530; Total IP Length = 40; Options = No Options
TCP: Control Bits: .A.R.., len: 0, seq: 0-0, ack:3409265780, win: 0, src: 1433 dst: 4364
TCP: Source Port = 0x0599
TCP: Destination Port = 0x110C
TCP: Sequence Number = 0 (0x0)
TCP: Acknowledgement Number = 3409265780 (0xCB354474)
TCP: Data Offset = 20 bytes
TCP: Flags = 0x14 : .A.R..
TCP: ..0..... = No urgent data
TCP: ...1.... = Acknowledgement field significant
TCP: ....0... = No Push function
TCP: .....1.. = Reset the connection
TCP: ......0. = No Synchronize
TCP: .......0 = Not the end of the data
TCP: Window = 0 (0x0)
TCP: Checksum = 0xF1E7
TCP: Urgent Pointer = 0 (0x0)

Arvestage, et pordi allikas on 0x599 või 1433 kümnendsüsteemis. See tähendab, et tavalise arvuti, kus töötab SQL Server ja mis pärineb paketi töötab vaikeport 1433. Pange tähele, et kinnitamisväli on oluline ühenduse lähtestamine lipud seatud. Kui olete tuttav filtreerimine Network Monitor jälgi, saate filtreerida 0x14 kuueteistkümnendsüsteemis näha ainult ACK + RESET paketid Network Monitor jälgi TCP ühilduvuslipu väärtuse.

Pange tähele, et võite vaadata ka sarnased ACK + RESET paketid kui arvuti, kus töötab SQL Server ei tööta üldse, või kui arvuti, kus töötab SQL Server ei kuula TCP/IP protokoll, nii et näha ACK + RESET paketid ei ole lõplik kinnitus, et teil on see probleem. Kui WinsockListenBacklog on liiga väike, mõned katsed saada ühendust nõustuge paketid ja mõned ühendused kohe saada ACK + RESET paketid ja sama aja jooksul.

Pange tähele, et väga harvadel juhtudel võib teil selle sätte reguleerimise isegi siis, kui klientarvutid kasutavad ühiskasutus on lubatud. Näiteks, kui palju klientarvutitel rääkides ühes arvutis, kus töötab SQL Server, suur üheaegselt sissetulevate Ühenduskatsete arvu võib tekkida parajasti isegi siis, kui ühiskasutus on lubatud.

Märkus. Kui WinsockListenBacklog sätte muutmiseks peate Windowsi selle sätte jõustamiseks taaskäivitada. Lihtsalt peatama ja taaskäivitama teenuse SQL serveri sätte jõustamiseks. WinsockListenBacklog registrisätet on ainult arvutis, kus töötab SQL Server. See ei ole mingit mõju kliendi arvutisse, mis SQL-i serveriga suhtlemisel.

Kas vajate veel abi?

Kas soovite rohkem valikuvariante?

Siin saate tutvuda tellimusega kaasnevate eelistega, sirvida koolituskursusi, õppida seadet kaitsma ja teha veel palju muud.

Kogukonnad aitavad teil küsimusi esitada ja neile vastuseid saada, anda tagasisidet ja saada nõu rikkalike teadmistega asjatundjatelt.

Kas sellest teabest oli abi?

Kui rahul te keelekvaliteediga olete?
Mis mõjutas teie hinnangut?
Kui klõpsate nuppu Edasta, kasutatakse teie tagasisidet Microsofti toodete ja teenuste täiustamiseks. IT-administraator saab neid andmeid koguda. Privaatsusavaldus.

Täname tagasiside eest!

×