Popis nastavení protokolu TCP/IP, které budete pravděpodobně muset upravit při sdružování připojení k serveru SQL Server je zakázáno.

Překlady článku Překlady článku
ID článku: 328476 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Použijete-li ovladač ODBC serveru SQL Server, SQL Server OLE DB provider nebo spravovaného zprostředkovatele System.Data.SqlClient, můžete zakázat pomocí odpovídajících aplikačních programovacích rozhraní (API) sdružování připojení. Po zákazu 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 některé nastavení protokolu TCP/IP, které budete pravděpodobně muset upravit za těchto podmínek.

Další informace

Vypnutí sdružování může způsobit základní síťový ovladač serveru SQL Server rychle otevřít a zavřít nová soket připojení k počítači se serverem SQL Server. Budete muset změnit výchozí nastavení soketů protokolu TCP/IP pro operační systém a počítač se systémem SQL Server vypořádat se s vyšší úrovní stresu.

Všimněte si, že tento článek popisuje pouze nastavení ovlivňující síťové knihovny serveru SQL Server při použití protokolu TCP/IP. Vypnutí sdružování může také způsobit stress problémům 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 nevíte, témata v tomto článku, společnost Microsoft doporučuje dobré knihy o sokety protokolu 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. Používáte sdružování výrazně zlepšuje celkovou výkonnost na straně klienta i na straně serveru SQL, při použití ovladače serveru SQL Server. Používáte sdružování také značně snižuje provoz v síti k počítači, který je spuštěn SQL Server. Zkušební vzorek, použitý 20 000 SQL Server připojení otevře a zavře s povoleným sdílením například používá asi 160 síťových paketů TCP/IP, celkem 23,520 bajtů síťových aktivit. S sdružování zakázán, vygeneruje stejného zkušebního vzorku 225,129 síťových paketů TCP/IP, celkem 27,209,622 bajtů činnosti sítě.

Všimněte si, že po zobrazení těchto zátěže TCP/IP soketu problémy související s pomocí síťové knihovny serveru SQL Server, můžete obdržet jednu nebo více z následujících chybových zpráv při pokusu o připojení k počítači se serverem SQL Server:
SQL Server neexistuje nebo byl odepřen přístup
Vypršel časový limit
Obecná chyba sítě
Zprostředkovatel TCP: Normálně je povoleno pouze jedno použití pro každou adresu soketu (protokol/síťové adresy, portu).
Poznámka: Pokud se vyskytují jiné problémy se serverem SQL Server; může také přijímat tyto specifické chybové zprávy například můžete obdržet tyto chybové zprávy vypnutí vzdáleného počítače, který je spuštěn SQL Server, je-li vzdálený počítač se serverem SQL Server nenaslouchá na soketů TCP/IP vůbec, pokud síťové připojení k počítači se serverem SQL Server je přerušeno, protože síťový kabel pochází, nebo pokud máte potíže s rozlišením DNS. Podstatě vše, co může způsobit selhání otevřít soket protokolu TCP/IP v počítači se serverem SQL Server klienta může způsobit chybové zprávy. Však s soketu stress související problém, k problému dochází nepravidelně napětí roste a spadá. Počítač může běžet hodiny bez chyb, pak chyba nastane jeden nebo dva časy a počítač potom pracuje několik dalších hodin bez chyb. Také máte tento problém, obecné připojení k serveru SQL Server pracuje v jeden okamžik, selže, další a pak opět funkční další okamžik. Jinými slovy problémy související s stress soketu obvykle vyskytují sporadicky, ale skutečné potíže s dosažitelností sítě se serverem SQL Server obvykle nedochází sporadicky.

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

Další informace o anonymní portů klepněte na tlačítko 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ýšit Limit připojení k serveru IMAP

Upravte nastavení MaxUserPort a TcpTimedWaitDelay

Všimněte si, že MaxUserPort a TcpTimedWaitDelay nastavení platí 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, které nepoužívají sdružování připojení. Například nastavení platí na serveru IIS (Internetová informační služba), je obsluha velký počet příchozích požadavků 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 službou protokolu TCP/IP s sdružování zakázán. Pokud je povoleno sdružování, není nutné upravit MaxUserPort a TcpTimedWaitDelay nastavení.

Při otevření připojení k počítači se serverem SQL Server pomocí protokolu TCP/IP, otevře podkladové síťové knihovny serveru SQL Server soketu protokolu TCP/IP v počítači se serverem SQL Server. Po otevření této soketu, síťové knihovny serveru SQL Server neumožňuje SO_REUSEADDR Možnost soketů TCP/IP. Další informace o SO_REUSEADDR nastavení soketu, naleznete v tématu "setsockopt" v Microsoft Developer Network (MSDN).

Všimněte si, že síťové knihovny serveru SQL Server výslovně povolit SO_REUSEADDR Možnost soketů TCP/IP z bezpečnostních důvodů. Když SO_REUSEADDR je povoleno, může uživatel se zlými úmysly 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 SQL Server v síti knihovny neumožňuje SO_REUSEADDR možnost soketu pokaždé, když otevřete a zavřete soketu pomocí síťové knihovny serveru SQL Server na straně klienta soketu zadá stavu TIME_WAIT čtyři minuty. Pokud jste rychle otevírání a zavírání připojení serveru SQL přes TCP/IP s sdružování zakázáno, jsou rychle otevírání a zavírání soketů TCP/IP. Jinými slovy každé připojení serveru SQL Server má jednu soketů TCP/IP. Je-li rychle otevřít a uzavřít sokety 4000 v méně než čtyři minuty, dostanete výchozí nastavení maxima anonymní porty klienta a nové pokusy o připojení soketu nezdaří, dokud stávající sadu soketů TIME_WAIT vyprší.

Na straně klienta, bude pravděpodobně třeba zvýšit MaxUserPort a TcpTimedWaitDelay nastavení, které jsou zmíněny v Q319502, když máte sdružování zakázán. Nastavení pro tyto hodnoty jsou určeny podle počtu připojení k serveru SQL se otevře a zavře dojít na straně klienta. Můžete zkoumat, kolik portů klienta jsou ve stavu TIME_WAIT pomocí nástroje Netstat v klientském počítači. Spuštění nástroje Netstat se -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 a adresu IP klientského počítače je 10.10.10.10 tři zjištěno připojení a dvě připojení 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
				
Při spuštění netstat - n a uvidíte, že téměř 4000 připojení IP adresu cílového počítače se serverem SQL Server jsou ve stavu TIME_WAIT, můžete oba zvýšit výchozí MaxUserPort nastavení a snížit TcpTimedWaitDelay nastavení tak, aby nespustíte z anonymní porty klienta. Například můžete nastavit MaxUserPort nastavení 20000 a TcpTimedWaitDelay nastavení na 30. Dolní TcpTimedWaitDelay nastavení znamená, že sokety čekat ve stavu TIME_WAIT méně času. A vyšší MaxUserPort nastavení znamená, že můžete mít více sockets ve stavu TIME_WAIT.

Všimněte si, že pokud upravíte MaxUserPort nebo TcpTimedWaitDelay nastavení, je nutné restartovat systém Microsoft Windows nové nastavení se projeví. Na MaxUserPort a TcpTimedWaitDelay nastavení je pro klientský počítač, který je mluvení s počítačem se systémem 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 neprová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 je upravit MaxUserPort nastavení, doporučujeme, abyste rezervovat 1434 port používaný 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 znalostní bázeJak 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ých pro službu SQL Server klepněte na tlačítko znalostní báze Microsoft Knowledge Base:
154628 INF: Protokoly jazyka SQL 17832 požadavky na připojení více TCP\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, povolený soketu. Tato Nevyřízené položky představuje maximální délka fronty čekajících připojení pro posluchače. Pokud délka fronty překročí maximální délka, síťové knihovny serveru SQL Server okamžitě odmítne další pokusy o připojení soketu protokolu TCP/IP. Navíc síťové knihovny serveru SQL Server, odešle paket ACK + obnovit.

SQL Server 2000 používá výchozí naslouchat Nevyřízené položky nastavení 5. To znamená, že počítač se serverem SQL Server předá hodnotu 5 parametru Nevyřízené položky naslouchání Rozhraní Winsock API při naslouchání Rozhraní API nastaví protokol TCP/IP poslech podprocesů v počítači se serverem SQL Server. Můžete nastavit klíč registru WinsockListenBacklog zadat jinou hodnotu pro tento parametr předávat. Spuštění serveru SQL Server 2005, síťovou knihovnu předává hodnotu SOMAXCONN jako Nevyřízené položky nastavení naslouchání ROZHRANÍ API. SOMAXCONN umožňuje zprostředkovateli rozhraní Winsock nastavíte maximální přijatelnou hodnotu tohoto nastavení. Klíč registru WinsockListenBacklog je proto již používá nebo potřeby SQL Server 2005.

Nevyřízené položky, nastavení funguje takto: Předpokládejme, že služby libovolného přijímá příchozí požadavky soketů TCP/IP. Nastavit nastavení Nevyřízené položky 5, mnoho požadavků na připojení soketu jsou neustále datových proudů v služby není možné reagovat na příchozí požadavky rychlé, která jsou. V tomto okamžiku TCP/IP socket layer fronty tyto příchozí požadavky ve frontě Nevyřízené položky a služby později pull požadavky této fronty a zpracovávat příchozí požadavek na připojení soketu. Po fronty zaplní, TCP/IP socket layer okamžitě odmítne všechny požadavky další soket, dodávané odesláním paketu ACK + obnovení zpět klientovi. Zvyšování zvětší Nevyřízené položky fronty počet čekajících připojení soketu požaduje, aby TCP/IP socket layer 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í přečíst toto nastavení registru při prvním spuštění služby serveru SQL Server. Pokud toto nastavení neexistuje, je použit výchozí 5. Pokud existuje nastavení registru, SQL Server načte nastavení a používá zadaná hodnota se nazývá Nevyřízené položky nastavení, při poslechu rozhraní WinSock API, jako jsou podprocesy naslouchání soketu protokolu TCP/IP nastaveny uvnitř serveru SQL Server.

Chcete-li zjistit, zda jste do tohoto problému, můžete spustit trasování programu Sledování sítě na klienta nebo počítač, který je spuštěn SQL Server a pro požadavky na připojení soketu, které jsou ihned odmítnuty s ACK + obnovit vzhled. Při zkoumání paketů TCP/IP v programu Sledování sítě, viz paket jako například v případě, že k tomuto problému dochází:
Frame: Base frame properties
ETHERNET:  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 spuštěn na výchozí port 1433. Všimněte si také, Pole potvrzení a Obnovit připojení jsou nastaveny příznaky. Pokud jste obeznámeni s filtrováním trasování programu Sledování sítě, můžete filtrovat podle 0x14 zobrazíte pouze pakety ACK + obnovení trasování programu Sledování sítě hexadecimální hodnotu příznaky protokolu TCP.

Poznámka: Pokud počítač se serverem SQL Server neběží vůbec nebo počítač, který je spuštěn SQL Server neposlouchá protokol TCP/IP, tak prohlížení ACK + RESET paketů není jednoznačný potvrzení, že máte tento problém můžete také zobrazit podobná ACK + RESET paketů. Pokud WinsockListenBacklog je příliš nízká, některé připojení přijímat pokusy o příjem paketů 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ě třeba upravit toto nastavení i v případě, že je povoleno sdružování v klientských počítačích. Například pokud mluvíte mnoho klientských počítačů pro jeden počítač, 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 kterémkoli okamžiku i v případě, že je povoleno sdružování.

Poznámka: Pokud je upravit WinsockListenBacklog nastavení nemáte Windows toto nastavení se projeví až po restartování. Právě zastavte a restartujte službu SQL Server pro nastavení se projeví. Na WinsockListenBacklog nastavení registru je určena pouze pro počítače se serverem SQL Server. Tato možnost nemá žádný vliv na klientský počítač, který je mluvení k serveru SQL Server.

Vlastnosti

ID článku: 328476 - Poslední aktualizace: 19. května 2011 - Revize: 13.0
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbsqlsetup kbinfo kbmt KB328476 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:328476

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com