Popis nastavení protokolu TCP/IP, které je třeba upravit při sdružování připojení k serveru SQL Server je zakázán.

DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.

Projděte si také anglickou verzi článku: 328476
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ázat 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. Je třeba změnit výchozí nastavení soketů protokolu TCP/IP pro 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 zátěž související s ostatními protokoly na serveru SQL Server 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. Sdružování výrazně zlepšuje celkový výkon na straně klienta a na straně serveru SQL 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. Ukázkový test, 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é přijímat tyto specifické chybové zprávy Například můžete obdržet tyto chybové zprávy Pokud vzdálený počítač, který je spuštěn SQL Server vypnutí, pokud vzdálený počítač, který je spuštěn SQL Server není poslech 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 potíže s rozlišením DNS. V podstatě cokoliv, co může způsobit selhání otevření soketů protokolu TCP/IP do počítače se systémem SQL Server klient 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č 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 jeden okamžik, selže další a pak další rychlé opět funkční. Jinými slovy problémy týkající se stresu soketu 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 nastává 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čí výchozí nastavení WinsockListenBacklog 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 k dispozici 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 s sdružování zakázán pomocí protokolu TCP/IP. 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 soketů 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ě neumožňuje možnost SO_REUSEADDR TCP/IP soketu 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 soketu možnost SO_REUSEADDR soketu zadá stavu TIME_WAIT pro čtyři minuty. Pokud jste rychle otevírání a zavírání připojení serveru SQL Server pomocí protokolu 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ů TCP/IP. Pokud rychle otevírat a zavírat 4000 soketů v méně než čtyři minuty, dosáhnou výchozí nastavení maxima anonymní porty klientů a nové pokusy o připojení soketu nezdaří, dokud stávající sadu soketů TIME_WAIT časový limit.

Na straně klienta pravděpodobně zvýšíte nastavení MaxUserPort a TcpTimedWaitDelay , které jsou zmíně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 spočítejte počet soketů klienta na vaši 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í je ve stavu TIME_WAIT:
C:\>netstat -nActive 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 ve stavu TIME_WAIT, jak zvýšíte výchozí nastavení MaxUserPort a snížit nastavení TcpTimedWaitDelay z anonymní porty klienta nelze spustit. 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 nebo 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: Pokud nastavení MaxUserPort doporučujeme vyhradit pro použití portu 1434 službou Prohlížeč serveru SQL (sqlbrowser.exe). Další informace o tom, jak postupovat, získáte v následujícím článku znalostní bá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

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: Protokoly jazyka SQL 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 povolená pro soket rezervu. 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. 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 parametr rezervu 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 tohoto nastavení zprostředkovateli rozhraní Winsock. Klíč registru WinsockListenBacklog je tedy již používá nebo potřeby v SQL Server 2005.

Nevyřízené položky, nastavení funguje takto: Předpokládejme, že libovolné služby je zpracovávat 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 + obnovení zpět klientovi. Zvýšit zvýšení velikosti fronty nevyřízených položek, počet nevyřízený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 WinsockListenBacklog nastavení je specifické pro SQL Server. SQL Server se pokusí čí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 až 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 paket následující po 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 OptionsTCP: 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 PĚT + RESET pakety trasování programu Sledování sítě hexadecimální hodnotu TCP Flags.

Poznámka: Pokud počítači se systémem SQL Server není spuštěna na všech nebo počítači se systémem SQL Server nenaslouchá protokolu TCP/IP, takže vidět PĚT + 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 pakety ACK + obnovit 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 se systémem 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. Nemá žádný vliv na klientský počítač, který je rozhovor na serveru SQL Server.

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 328476 - Poslední kontrola: 03/15/2015 03:36:00 - Revize: 14.0

Microsoft SQL Server 2000 Standard Edition, Microsoft ADO.NET 1.1, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbsqlsetup kbinfo kbmt KB328476 KbMtcs
Váš názor