SQL Server bağlantı havuzu devre dışı bırakıldığında ayarlamanız gerekebilir TCP/IP ayarlarının açıklaması

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 328476
Özet
SQL Server ODBC sürücüsü, SQL Server OLE DB sağlayıcısı veya System.Data.SqlClient Yönetilen Sağlayıcı kullanırken, bağlantı havuzu ilgili uygulama programlama arabirimleri (API) kullanarak devre dışı bırakabilirsiniz. Havuz oluşturmayı devre dışı bıraktığınızda, uygulamanız sık sık bağlantı açıp kapatıyorsa temel SQL Server Ağ Kitaplığı üzerindeki stres artabilir. Bu makalede, bu koşullar altında ayarlamanız gerekebilir belirli TCP/IP ayarları açıklanır.
Daha fazla bilgi
Havuzu devre dışı bırakılması, hızla açmak ve SQL Server çalıştıran bir bilgisayara yeni bir soket bağlantıları kapatmak temel SQL Server ağ sürücüsü neden olabilir. İşletim sistemi ve yüksek stres düzeyleri ile başa çıkmak için SQL Server çalıştıran bilgisayarda varsayılan TCP/IP yuvası ayarlarını değiştirmeniz gerekebilir.

Not Bu makalede yalnızca TCP/IP protokolünü kullandığınızda, SQL Server Ağ Kitaplığı etkileyen ayarları açıklanır. Havuzu devre dışı bırakılması da adlandırılmış kanallar gibi diğer SQL Server protokoller stres ile ilgili sorunlara neden olabilir, ancak bu konu bu makalede anlatılmamaktadır. Bu makale yalnızca deneyimli kullanıcılar içindir. Bu makaledeki konular anlamıyorsanız, Microsoft TCP/IP sockets iyi bir kitaba bakın önerir.

Not Microsoft, her zaman havuzu ile SQL Server sürücülerini kullanmanızı önerir. SQL Server sürücüler kullandığınızda büyük ölçüde kuyruğu kullanmanın hem istemci tarafında, hem de SQL sunucu tarafı genel performansını artırır. Ayrıca oldukça havuzu kullanarak SQL Server çalıştıran bilgisayarın ağ trafiğini azaltır. Örneğin, bağlantı açar ve kapatır havuza alma etkin 20.000 SQL Server kullanılan bir örnek test yaklaşık 160 TCP/IP ağ paketlerini ağ etkinliğinin 23,520 bayt toplam için kullanılır. Devre dışı havuzu ile aynı örnek test 225,129 TCP/IP ağ paketlerini ağ etkinliğinin 27,209,622 bayt toplam üretilen.

Not: Bu stres ile ilgili TCP/IP yuvası sorunları ile SQL Server Ağ kitaplıkları gördüğünüzde, SQL Server çalıştıran bir bilgisayara bağlanmaya çalıştığınızda aşağıdaki hata iletilerinden birini veya alabileceğiniz
SQL Server yok veya erişim reddedildi
Zaman aşımı süresi doldu
Genel ağ hatası
TCP sağlayıcısı: Normalde her yuva adresi (Protokol/ağ adresi/bağlantı noktası) için yalnızca bir kullanıma izin verilir.
Not SQL Server ile başka sorunlar ortaya çıkan zaman bu belirli hata iletileri de alabilirsiniz; Örneğin, ağ kablosu çekilen çünkü SQL Server çalıştıran bilgisayarın ağ bağlantısı kesildiğinde, SQL Server çalıştıran uzak bilgisayara TCP/IP Yuvaları için hiç dinlemiyor, aşağı, SQL Server çalıştıran uzak bilgisayar kapatıldığında veya DNS çözümlemesi sorunları yaşıyorsanız, bu hata iletileri alabilirsiniz. Temel olarak, istemci SQL Server çalıştıran bilgisayara bir TCP/IP yuvası açmak başarısız olmasına neden olabilecek bir şey de hata iletilerini neden olabilir. Bununla birlikte, stres üstüne ve düşer gibi bir yuva stres ile ilgili sorun zaman zaman sorun oluşur. Bilgisayar saatlerini hatasız çalışmaya başlayabilir, daha sonra hata bir veya iki kez ve bilgisayar oluşur, sonra birkaç için daha fazla saat hatasız çalışır. Ayrıca, bu sorun olduğunda, SQL Server'a genel bağlantı bir anlık çalışır, sonraki başarısız sonra sonraki anlık yeniden çalışır. Diğer bir deyişle, zaman zaman yuva stres ile ilgili sorunlar genellikle oluşur, ancak gerçek SQL sunucusuyla ağ bağlantısı sorunları genellikle zaman zaman gerçekleşmez.

İki ana stres ile ilgili sorunlar genellikle oluşur SQL Server TCP/IP protokolünü kullanırken havuzlaması devre dışı bıraktığınızda: Anonim noktalarının istemci bilgisayarda çalıştırabilir veya SQL Server çalıştıran bilgisayardaki varsayılan WinsockListenBacklog ayarı aşabilir.

Anonim bağlantı noktaları hakkında ek bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
319502 PRB: 'WSAEADDRESSINUSE' IMAP bağlantı sınırını artırmak sonra bir anonim bağlantı noktası üzerinden bağlanmaya çalıştığınızda hata iletisi

MaxUserPort ve TcpTimedWaitDelay ayarlarını belirleyin

Bağlantı havuzu MaxUserPort ve TcpTimedWaitDelay ayarları uygulanabilir hızla açma ve kapatma ve SQL Server çalıştıran uzak bir bilgisayara bağlantı yalnızca bir istemci bilgisayar için Not kullanmıyor. Örneğin, bu ayarları, gelen HTTP isteklerini çok sayıda hizmet ve açılış ve kapanış bağlantıları, SQL Server çalıştıran ve TCP/IP iletişim kuralını devre dışı havuzu ile kullanan uzaktaki bir bilgisayara Internet Information Services (IIS) sunucu üzerinde uygulanabilir. Havuzu etkinleştirilirse, MaxUserPort ve TcpTimedWaitDelay ayarlarını yapmak gerekmez.

SQL Server çalıştıran bir bilgisayara bir bağlantı açmak için TCP/IP protokolünü kullandığınızda, arka plandaki SQL Server ağ kitaplığı SQL Server çalıştıran bilgisayara bir TCP/IP yuvası açılır. Bu yuva açıldığında, SQL Server ağ kitaplığını SO_REUSEADDR TCP/IP yuvası seçeneğini etkinleştirmez. SO_REUSEADDR yuva ayarı hakkında daha fazla bilgi için Microsoft Developer Network (MSDN) "Setsockopt" konusuna bakın.

Not SQL Server Ağ Kitaplığı özellikle güvenlik nedeniyle SO_REUSEADDR TCP/IP yuvası seçeneğini etkinleştirmez. SO_REUSEADDR etkin olduğunda, kötü niyetli bir kullanıcı SQL Server bir istemci bağlantı noktası avcısı ve istemci SQL Server çalıştıran bir bilgisayara erişmesini sağlayan kimlik bilgilerini kullanın. Ağ kitaplığı SQL Server her zaman açın ve istemci tarafında, SQL Server Ağ Kitaplığı aracılığıyla bir yuva kapatılamadı SO_REUSEADDR yuva seçeneğini etkinleştirmez çünkü varsayılan olarak, dört dakika kapatıldığı sırada TIME_WAIT durumunda yuva girer. Açılış ve havuzu devre dışı olan SQL Server bağlantılarını TCP/IP üzerinden kapanış hızla iseniz, size hızlı bir şekilde açma ve kapatma TCP/IP Yuvaları. Diğer bir deyişle, her SQL Server bağlantısı bir TCP/IP yuvası vardır. Varolan TIME_WAIT yuva kümesini hızla açmak ve dört dakikadan az 4000 yuva kapatmak, anonim istemci bağlantı noktaları için varsayılan en yüksek ayar ulaşacak ve kadar yeni yuva bağlantı girişimleri başarısız olursa zaman aşımına uğradı.

İstemci tarafında, havuzu devre dışı olduğunda, Q319502'de açıklanan MaxUserPort ve TcpTimedWaitDelay ayarlarını artırmanız gerekebilir. Bu değerler için ayarlar açar ve kapatır ortaya çıkan istemci tarafında kaç SQL Server bağlantı tarafından belirlenir. İstemci bilgisayarda Netstat aracını kullanarak kaç istemci bağlantı noktaları bir TIME_WAIT durumunda olan inceleyebilirsiniz. Netstat -n bayrağı ile aşağıdaki gibi aracı ve bir TIME_WAIT durumunda olan SQL Server IP adresiniz için istemci yuva sayısı. Bu örnekte, 10.10.10.20 SQL Server çalıştıran uzak bir bilgisayarın IP adresidir, 10.10.10.10 istemci bilgisayarın IP adresidir ve bağlantıları ve iki bağlantı TIME_WAIT durumunda olan üç kuruldu:
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				
Netstat - n çalıştırın ve yakın 4000 bağlantıları için IP adresi hedef SQL Server çalıştıran bilgisayarın olduğunu TIME_WAIT durumunda görüyorsanız, hem MaxUserPort varsayılan ayar artırmak ve böylece istemcinin anonim noktalarının çalıştırmayın TcpTimedWaitDelay ayarını azaltın. Örneğin, MaxUserPort ayarı için 20000 ve 30 TcpTimedWaitDelay ayarını ayarlayın. TcpTimedWaitDelay daha düşük bir ayarı yuva TIME_WAIT durumunda daha az zaman bekleme anlamına gelir. Daha yüksek MaxUserPort ayarı TIME_WAIT durumunda daha fazla yuva olabilir anlamına gelir.

MaxUserPort veya TcpTimedWaitDelay ayarı, yeni ayarın etkili olması için Microsoft Windows'un yeniden başlatılmasını unutmayın. SQL Server TCP/IP Yuvaları üzerinden çalışan bir bilgisayara Konuşmayı herhangi bir istemci bilgisayar MaxUserPort ve TcpTimedWaitDelay ayarları içindir. SQL Server çalıştıran bilgisayarda SQL Server çalıştıran yerel bilgisayara yerel TCP/IP soket bağlantıları yapmadıkça ayarlarsanız, bu ayarların herhangi bir etkisi yoktur.

Not:MaxUserPort ayarı, bağlantı noktası 1434 kullanmak için SQL Server Browser service (sqlbrowser.exe) tarafından rezerve öneririz. Bunun nasıl yapılacağı hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
812873 Windows Server 2003 veya Windows 2000 Server çalıştıran bir bilgisayarda kısa ömürlü bağlantı noktaları aralığı nasıl ayrılır

WinsockListenBacklog ayarı

Bu SQL Server'a özgü kayıt defteri ayarı hakkında ek bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
154628 INF: SQL günlükleri ile birden fazla TCP\IP bağlantı isteklerini 17832
TCP/IP Yuvaları ağ kitaplığı SQL Server dinlediği zaman dinlemek Winsock API SQL Server ağ kitaplığını kullanır. İkinci parametre dinlemek API için yuva için izin verilen biriktirme listesidir. Bu biriktirme bağlantıları dinleyicisi için bekleyen sırası uzunluğu en fazla temsil eder. Sıra uzunluğu en fazla uzunluğu aşıyor, SQL Server Ağ Kitaplığı daha fazla TCP/IP yuvası bağlantı girişimleri hemen reddeder. Ayrıca, SQL Server Ağ Kitaplığı bir ACK + SIFIRLAMA paketi gönderir.

SQL Server 2000 kullanan bir varsayılan biriktirme listesi ayarı 5 dinleyin. Bu, SQL Server çalıştıran bilgisayarda TCP/IP protokolünü dinleme zincirler dinlemek API kurar zaman SQL Server çalıştıran bilgisayar 5 değeri dinlemek Winsock API, biriktirme parametresi geçtiği anlamına gelir. Bu parametre için geçirilecek farklı bir değer belirtmek için WinsockListenBacklog kayıt defteri anahtarı ayarlayabilirsiniz. SQL Server 2005'te başlayarak, ağ kitaplığını SOMAXCONN değeri biriktirme listesi ayarı olarak dinlemek için API geçirir. Bu ayar için en uygun bir değer ayarlamak Winsock sağlayıcı SOMAXCONN sağlar. Bu nedenle, WinsockListenBacklog kayıt defteri anahtarı artık kullanılır ve SQL Server 2005'te gerekli.

Works şekilde ayarlama biriktirme: rasgele bir hizmeti gelen TCP/IP yuvası isteklerini dinlemeye varsayalım. Biriktirme listesi ayarı 5 olarak ayarlarsanız ve birçok yuva bağlantı isteklerinin sürekli olarak akışa hizmet geldikleri olarak hızlı gelen isteklere yanıt verecek şekilde mümkün olmayabilir. Bu noktada, TCP/IP Yuva Katmanı biriktirme sıradaki gelen bu istekleri sıraya alır ve hizmeti, daha sonra bu sıra dışı istekleri çeker ve gelen soket bağlantısı isteğini işlemek. Kuyruk dolarsa sonra TCP/IP Yuva Katmanı istemciye bir ACK + SIFIRLAMA paketi göndererek gelen herhangi bir ek yuva isteğini hemen reddeder. Artan istekleri sayısı Yuva bağlantısı bekleyen istekler reddedilir önce TCP/IP Yuva Katmanı kuyruklar bekleme listesi sıra boyutu artar.

WinsockListenBacklog ayar SQL Server'a özgü olduğuna dikkat edin. SQL Server, SQL Server hizmetini ilk kez başlatıldığında, bu kayıt defteri ayarı okumaya çalışır. 5 varsayılan ayarı yoksa kullanılır. Kayıt defteri ayarı varsa, SQL Server ayarı okur ve TCP/IP yuvası dinleme iş parçacıklarını ayarlama gibi WinSock API dinlerken biriktirme listesi ayarı adıyla sağlanan değer kullanan SQL Server içinde yukarı.

Bu sorun ile çalışıp çalışmadığını belirlemek için istemci veya SQL Server çalıştıran bir bilgisayarda bir Ağ İzleyicisi izlemesi çalıştırın ve bir ACK + Sıfırla hemen reddedilir yuva bağlantı isteklerini arayın. Ağ İzleyicisi'nde TCP/IP paketlerini incelerseniz, bu sorunun oluştuğu zaman bir paket aşağıdaki bakın:
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)				
Kaynak bağlantı noktası 1433 ondalık veya 0x599 olduğuna dikkat edin. Paket SQL Server ve çalışan tipik bir bilgisayardan gelen anlamına gelir 1433 varsayılan bağlantı noktası üzerinde çalışıyor. Ayrıca bildirim alanı önemli ve Bağlantıyı sıfırla bayrakları ayarlamak unutmayın. Ağ İzleyicisi İzleme süzme işlemiyle deneyiminiz varsa, yalnızca Ağ İzleyicisi izlemesinde ACK + SIFIRLAMA paketlerinin görmek için onaltılık 0x14 olarak TCP Flags değeri süzebilirsiniz.

Ayrıca benzer ACK + SIFIRLAMA paketlerinin SQL Server çalıştıran bilgisayarda hiç çalışmıyorsa veya SQL Server çalıştıran bilgisayar için TCP/IP iletişim kuralı, dinlemiyor ACK + SIFIRLAMA paketlerinin görme bu sorunu yaşıyorsunuz demektir kesin onay olmadýðýndan görebilirsiniz olduğunu unutmayın. WinsockListenBacklog çok düşükse, bazı bağlantı denemeleri almak paketlerini kabul et ve bazı bağlantılar ACK + SIFIRLAMA paketlerinin aynı zaman dilimi içinde hemen alırsınız.

Çok nadir durumlarda, istemci bilgisayarlarda havuzu etkin olsa bile bu ayar ayarlamak gerekebileceğini unutmayın. SQL Server çalıştıran tek bir bilgisayar için birçok istemci bilgisayarları konuşsanız, havuza alma etkinleştirildiğinde, örneğin, çok sayıda eşzamanlı gelen bağlantı girişimlerini herhangi belirli bir zamanda ortaya çıkabilir.

Not:WinsockListenBacklog ayarı varsa, bu ayarın etkili olması için Windows'u yeniden başlatmanız gerekmez. Sadece durdurmak ve ayarının etkinleşmesi SQL Server hizmetini yeniden başlatın. WinsockListenBacklog kayıt defteri ayarı yalnızca SQL Server çalıştıran bilgisayar için değil. SQL Server için Konuşmayı herhangi bir istemci bilgisayar üzerinde herhangi bir etkisi yok.

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Властивості

Ідентифікатор статті: 328476 – останній перегляд: 08/17/2015 04:57:00 – виправлення: 13.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 2005 Server Enterprise, Microsoft SQL Server 2005 Express Edition, Microsoft SQL 2005 Server Workgroup

  • kbsqlsetup kbinfo kbmt KB328476 KbMttr
Зворотний зв’язок