Přihlásit se pomocí účtu Microsoft
Přihlaste se nebo si vytvořte účet.
Dobrý den,
Vyberte jiný účet.
Máte více účtů.
Zvolte účet, pomocí kterého se chcete přihlásit.

Souhrn

Při použití ovladače SQL Server ODBC, SQL Server zprostředkovatele OLE DB nebo zprostředkovatele System.Data.SqlClient spravované lze zakázat pomocí příslušných rozhraní (API) sdružování připojení. Při zakázání sdružování stresu na podkladové síťové knihovny serveru SQL Server může být zvýšena, pokud aplikace často otevře a zavře připojení. Tento článek popisuje určitých nastavení protokolu TCP/IP, které může být nutné upravit za těchto podmínek.

Další informace

Vypnutí sdružování může způsobit podkladové síťový ovladač SQL Server rychle otevírat a zavírat nové soket připojení k počítači, který je spuštěn SQL Server. Bude pravděpodobně nutné změnit výchozí nastavení soketů protokolu TCP/IP pro operační systém a počítač, který je spuštěn SQL Server zacházet s vyšší úrovní napětí.

Poznámka: Tento článek popisuje pouze nastavení, které ovlivňuje síťové knihovny serveru SQL Server při použití protokolu TCP/IP. Vypnutí sdružování může také způsobit problémy související zátěž s ostatními protokoly serveru SQL Server, jako například pojmenované kanály, ale tento článek není popsán v tomto tématu. Tento článek je pouze pro pokročilé uživatele. Pokud nerozumíte témata v tomto článku, společnost Microsoft doporučuje dobré knihy o soketů TCP/IP v tématu.

Všimněte si, že společnost Microsoft důrazně doporučuje vždy použít sdružování s ovladači SQL Server. Pomocí sdružování výrazně zlepšuje celkový výkon na straně klienta a serveru SQL straně při použití ovladače SQL Server. Sdružování také výrazně snižuje zatížení sítě do počítače se systémem SQL Server. Zkušební vzorek, který používá 20 000 SQL Server se otevře a zavře s povoleným sdílením připojení použít, například asi 160 síťových paketů TCP/IP celkové 23,520 bajtů činnosti sítě. S sdružování zakázán, stejné zkušební vzorek generována 225,129 síťových paketů TCP/IP, celkem 27,209,622 bajtů činnosti sítě.

Všimněte si, že pokud se tyto zátěže TCP/IP soketu problémy s pomocí síťové knihovny serveru SQL Server, můžete obdržet jednu nebo více následujících chybových zpráv při pokusu o připojení k počítači se systémem SQL Server:

SQL Server neexistuje nebo přístup odepřen

Vypršel časový limit

Obecná chyba sítě

Zprostředkovatel TCP: Normálně je povoleno pouze jedno použití každé adresy soketu (protokol/síťové adresy, portu).

Poznámka: Pokud se vyskytnou jiné problémy se serverem SQL Server; můžete také obdržet tyto konkrétní chybové zprávy například může zobrazit tyto chybové zprávy, vzdáleného počítače, který je spuštěn SQL Server je vypnut, pokud vzdáleného počítače, který je spuštěn SQL Server nenaslouchá na soketů TCP/IP, pokud síťové připojení k počítači, ve kterém je spuštěn SQL Server není funkční, protože síťový kabel načítána nebo pokud máte problémy rozlišení DNS. V podstatě cokoli, co může způsobit klienta otevřít soketů protokolu TCP/IP do počítače se systémem SQL Server může způsobit chybové zprávy. Však se o problém týkající se stresu soketu k problému dochází nepravidelně roste napětí a spadá. Počítač může běžet hodiny bez chyb, pak chyba nastane jednou nebo dvakrát a počítače a potom spustí několik dalších hodin bez chyb. Také pokud máte tento problém, obecné připojení k serveru SQL Server pracuje v jeden okamžik, selže další a pak další rychlé opět funkční. Jinými slovy týkající se stresu soketu problémy se obvykle vyskytují sporadicky, ale skutečné potíže s dosažitelností sítě se serverem SQL Server obvykle nejsou prováděny sporadicky.

Dva hlavní problémy související s zátěžové obvykle dochází při zakázat sdružování při používání protokolu TCP/IP serveru SQL: může se projevit nedostatek anonymní porty v klientském počítači nebo pravděpodobně překročí WinsockListenBacklog výchozí nastavení v počítači, který je spuštěn SQL Server.


Další informace o anonymní porty klepněte na následující číslo článku znalostní báze Microsoft Knowledge Base:

319502 PRB: "WSAEADDRESSINUSE" chybová zpráva při pokusu o připojení prostřednictvím portu anonymní po zvýšení limitu IMAP

Upravte nastavení MaxUserPort a TcpTimedWaitDelay

Všimněte si, že nastavení MaxUserPort a TcpTimedWaitDelay jsou použitelné pouze pro klientský počítač, který je rychle otevírání a zavírání připojení ke vzdálenému počítači se systémem SQL Server a který není sdružování připojení. Například tato nastavení se vztahují na serveru Internetová informační služba (IIS), který zabezpečuje údržbu velký počet příchozí požadavky HTTP a který je otevírání a zavírání připojení ke vzdálenému počítači se systémem SQL Server a který je pomocí protokolu TCP/IP s sdružování zakázán. Pokud je povoleno sdružování, není nutné upravte nastavení MaxUserPort a TcpTimedWaitDelay .

Při otevření připojení k počítači je spuštěn SQL Server pomocí protokolu TCP/IP, podkladové síťové knihovny serveru SQL Server otevře soketů protokolu TCP/IP do počítače se systémem SQL Server. Po otevření tohoto soketu, síťové knihovny serveru SQL Server není povolena možnost SO_REUSEADDR soketu protokolu TCP/IP. Další informace o nastavení soketů SO_REUSEADDR naleznete v tématu "Setsockopt" v Microsoft Developer Network (MSDN).


Všimněte si, že síťové knihovny serveru SQL výslovně nepovolí možnost soketu SO_REUSEADDR TCP/IP z bezpečnostních důvodů. Pokud je povolen SO_REUSEADDR , uživateli se zlými úmysly může zneužijí port klienta k serveru SQL Server a použít pověření, které klient poskytuje přístup k počítači, ve kterém je spuštěn SQL Server. Ve výchozím nastavení protože síťové knihovny serveru SQL Server při každém otevření a zavření soket pomocí síťové knihovny serveru SQL Server na straně klienta neumožňuje možnost soketu SO_REUSEADDR soketu zadá stavu TIME_WAIT čtyři minuty. Pokud jste rychle otevírání a zavírání připojení k serveru SQL přes TCP/IP s sdružování zakázán, jsou rychle otevírání a zavírání soketů TCP/IP. Jinými slovy každé připojení serveru SQL Server má jeden soketů protokolu TCP/IP. Pokud rychle otevírat a zavírat 4000 soketů v méně než čtyři minuty, dostanete výchozí nastavení maxima anonymní porty klientů a nové pokusy o připojení soketu nezdaří, dokud stávající sadu soketů TIME_WAIT vyprší časový limit.

Na straně klienta může mít zvýšit nastavení MaxUserPort a TcpTimedWaitDelay , které jsou popsány v Q319502, když máte sdružování zakázán. Nastavení pro tyto hodnoty jsou určeny tak, že počet připojení serveru SQL Server otevře a zavře dojít na straně klienta. Můžete zjistit, kolik portů klienta jsou ve stavu TIME_WAIT v klientském počítači pomocí nástroje Netstat. Spustit nástroj Netstat -n příznak takto a počet soketů klienta na adresu IP serveru SQL, které jsou ve stavu TIME_WAIT. V tomto příkladu 10.10.10.20 je adresa IP vzdáleného počítače, který je spuštěn SQL Server, je adresa IP klientského počítače 10.10.10.10 a tři stanoveny dvě připojení a připojení jsou ve stavu TIME_WAIT:

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

Pokud spustíte příkaz netstat - n a zjistíte, že téměř 4000 připojení IP adresu cílového počítače, který je spuštěn SQL Server jsou ve stavu TIME_WAIT, jak zvýšíte výchozí nastavení MaxUserPort a snížit nastavení TcpTimedWaitDelay není nedostatek anonymní porty klienta. Můžete například hodnotu nastavení MaxUserPort 20000 a nastavení TcpTimedWaitDelay 30. Nižší nastavení TcpTimedWaitDelay znamená, že do zásuvek čekat ve stavu TIME_WAIT kratší dobu. Vyšší nastavení MaxUserPort znamená, že můžete mít více sockets ve stavu TIME_WAIT.

Všimněte si, že pokud upravíte nastavení MaxUserPort a TcpTimedWaitDelay , až po restartování systému Windows se projeví nové nastavení. Nastavení MaxUserPort a TcpTimedWaitDelay jsou pro klientský počítač, který je mluvení k počítači se spuštěným serverem SQL Server prostřednictvím soketů TCP/IP. Tato nastavení nemají žádný vliv, pokud jsou nastaveny v počítači, který je spuštěn SQL Server, pokud provádíte místní připojení soketu protokolu TCP/IP v místním počítači, který je spuštěn SQL Server.

Poznámka: Nastavení MaxUserPort doporučujeme vyhradit pro použití portu 1434 službou Prohlížeč serveru SQL (sqlbrowser.exe). Další informace o tom, jak to provést, klepněte na následující číslo článku databáze Microsoft Knowledge Base:

812873 rezervování rozsahu dočasných portů v počítači se systémem Windows Server 2003 nebo Windows 2000 Server

Upravte nastavení WinsockListenBacklog

Další informace o tomto nastavení registru specifické pro SQL Server klepněte na následující číslo článku znalostní báze Microsoft Knowledge Base:

154628 INF: SQL protokoly 17832 více požadavky na připojení IP
Při síťové knihovny serveru SQL Server naslouchá soketů TCP/IP, síťové knihovny serveru SQL Server používá naslouchání rozhraní Winsock API. Druhý parametr naslouchání rozhraní API je nevyřízené položky, které jsou povoleny pro soket. Tato rezerva představuje maximální délka fronty čekajících připojení pro posluchače. Pokud délka fronty je delší než maximální délka, síťové knihovny serveru SQL Server odmítne ihned další pokusy o připojení soketu protokolu TCP/IP. Navíc síťové knihovny serveru SQL Server odešle paket ACK + RESET.

SQL Server 2000 používá výchozí naslouchání nevyřízené položky nastavení 5. To znamená, že počítač, který je spuštěn SQL Server předá hodnotu 5 parametru nevyřízené položky naslouchání rozhraní Winsock API při naslouchání API nastaví naslouchajícího vláken protokolu TCP/IP v počítači, který je spuštěn SQL Server. Můžete nastavit klíč registru WinsockListenBacklog Chcete-li zadat jinou hodnotu pro tento parametr předávat. Spuštění v SQL Server 2005, síťové knihovny předá hodnotu SOMAXCONN jako nevyřízené položky nastavení naslouchání rozhraní API. SOMAXCONN umožňuje nastavit maximální přijatelnou hodnotu pro toto nastavení zprostředkovateli rozhraní Winsock. Klíč registru WinsockListenBacklog je proto již používá nebo potřeby v SQL Server 2005.

Nevyřízené položky nastavení funguje takto: Předpokládejme, že libovolný služba naslouchá příchozí požadavky soketů TCP/IP. -Li mnoho požadavků na připojení soketu jsou neustále vysílání datových proudů v nastavení nevyřízené položky nastavíte na 5, služba pravděpodobně není schopno reagovat na příchozí požadavky, které jsou tak rychlé, jako když jsou dodávány. V tomto okamžiku tyto příchozí požadavky ve frontě nevyřízené položky fronty vrstvy soketů TCP/IP a služba později přebírají požadavky z této fronty a zpracovávat příchozí požadavek na připojení soketu. Po frontě zaplní, vrstva soketů TCP/IP ihned odmítne všechny požadavky další soketu, které se vyskytují v odesláním paketu ACK + RESET zpět klientovi. Zvýšit zvýšení velikosti fronty nevyřízených položek, počet čekajících připojení soketu požadavku, že vrstva soketů TCP/IP fronty dříve, než jsou požadavky odmítnuty.

Všimněte si, že nastavení WinsockListenBacklog je specifické pro SQL Server. SQL Server se pokusí přečíst toto nastavení registru při prvním spuštění služby SQL Server. Pokud toto nastavení neexistuje, je použita výchozí 5. Pokud existuje nastavení registru, SQL Server přečte nastavení a používá zadanou hodnotou jako nevyřízené položky nastavení při naslouchání rozhraní WinSock API nazývá jako podprocesy naslouchání soketu protokolu TCP/IP nastaveny nahoru uvnitř SQL Server.

Chcete-li zjistit, zda jsou spuštěny na tento problém, můžete spustit trasování programu Sledování sítě na klienta nebo počítač, který je spuštěn SQL Server a vyhledejte požadavky na připojení soketu, které jsou okamžitě odmítnuty s ACK + RESET. Pokud si prohlédnete paketů TCP/IP v programu Sledování sítě, viz následující paket Pokud k tomuto problému dochází:

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)

Všimněte si, že zdrojový port 0x599 nebo 1433 v desítkové soustavě. To znamená, že paket pochází z typického počítače se systémem SQL Server a který je napájen z výchozí port 1433. Všimněte si také nastavit pole potvrzení a příznaky obnovit připojení . Pokud jste obeznámeni s filtrování trasování programu Sledování sítě, můžete filtrovat podle 0x14 zobrazíte pouze ACK + RESET pakety trasování programu Sledování sítě hexadecimální hodnotu TCP Flags.

Poznámka: Pokud počítač se systémem SQL Server není spuštěna na všech nebo pokud počítač, který je spuštěn SQL Server nenaslouchá protokolu TCP/IP, takže vidět ACK + RESET pakety nejsou jednoznačné potvrzení, že máte tento problém můžete také zobrazit podobné ACK + RESET pakety. Pokud WinsockListenBacklog je příliš nízká, některé přijmout pokusy o připojení přijímat pakety a některá připojení okamžitě přijímat ACK + RESET pakety ve stejném časovém rámci.

Všimněte si, že ve velmi výjimečných případech bude pravděpodobně nutné toto nastavení upravit, i když je povoleno sdružování v klientských počítačích. Například pokud mnoho klientských počítačů mluvení do jednoho počítače, který je spuštěn SQL Server, velký počet současných příchozích pokusů o připojení může dojít v jakémkoli čase, i když je povoleno sdružování.

Poznámka: Pokud upravíte nastavení WinsockListenBacklog , není nutné restartovat systém Windows toto nastavení se projeví. Stačí zastavit a restartovat službu serveru SQL Server pro nastavení se projeví. Nastavení registru WinsockListenBacklog je určena pouze pro počítače se systémem SQL Server. Tato možnost nemá žádný vliv na klientský počítač, který je rozhovor na serveru SQL Server.

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?
Po stisknutí tlačítka pro odeslání se vaše zpětná vazba použije k vylepšování produktů a služeb Microsoftu. Váš správce IT bude moci tato data shromažďovat. Prohlášení o zásadách ochrany osobních údajů.

Děkujeme vám za zpětnou vazbu.

×