

Makale numarası: 328476 - Bu makalenin geçerli olduğu ürünleri görün.
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. Havuzu devre dışı bıraktığınızda, uygulamanızın sık açar ve bağlantılarını kapatn temel SQL Server Ağ Kitaplığı üzerinde stres artırılabilir. Bu makalede, bu koşullar altında ayarlamanız gerekebilir belirli TCP/IP ayarları açıklanır.
Havuzu devre dışı bırakılması, hızla açmak ve SQL Server çalıştıran bilgisayar için 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 bilgisayar için varsayılan TCP/IP yuvası ayarları değiştirmeniz gerekebilir.
Not Bu makalede yalnızca TCP/IP protokolünü kullandığınızda, SQL Server Ağ Kitaplığı etkileyen ayarları açıklanmaktadır. Havuzu devre dışı bırakılması da adlandırılmış kanallar gibi diğer SQL Server protokoller stres ile ilgili sorunları neden olabilir, ancak bu konu bu makalede anlatılmamaktadır. Bu makale yalnızca deneyimli kullanıcılar içindir. Bu makaledeki konular anlaşılmıyor, 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üleri kullanan büyük ölçüde kuyruğu kullanmanın hem istemci tarafında, hem de SQL Server side genel performansını artırır. Ayrıca önemli ölçüde kuyruğu kullanmanın 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ını 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ı
Not SQL Server ile başka sorunlar ortaya çıkan, 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ı, dinlemede değil, SQL Server çalıştıran uzak bilgisayara aşağı, kapatıldığında veya DNS çözümlemesi sorunları yaşıyorsanız, bu hata iletileri alabilirsiniz. Temel olarak, istemci SQL Server çalıştıran bilgisayara TCP/IP yuvası açmak başarısız olmasına neden olabilecek bir şey de hata iletilerini neden olabilir. Ancak, stres üstüne ve düşer gibi bir yuva stres ile ilgili sorun zaman zaman sorun oluşur. Bilgisayarın saat hatasız çalışmaya başlayabilir, daha sonra hata bir veya iki kez ve bilgisayar oluşuyor 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 olur ve sonra sonraki anlık yeniden çalışır. Başka bir deyişle, zaman zaman yuva stres ile ilgili sorunlar genellikle oluşur, ancak SQL Server ile gerçek ağ bağlantısı sorunları genelde zaman zaman gerçekleşmez.
TCP sağlayıcısı: Normalde her yuva adresi (Protokol/ağ adresi/bağlantı noktası) için yalnızca bir kullanıma izin verilir.
İki ana stres ile ilgili sorunlar genellikle oluşur SQL Server TCP/IP protokolünü kullanırken havuzu devre dışı bıraktığınızda: anonim noktalarının istemci bilgisayarda çalıştırabilir veya SQL Server çalıştıran bilgisayarda 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
(https://support.microsoft.com/kb/319502/EN-US/ )PRB: 'WSAEADDRESSINUSE' IMAP bağlantı sınırı artırmak sonra bir anonim bağlantı noktası üzerinden bağlanmaya çalıştığınızda hata iletisi
MaxUserPort ve TcpTimedWaitDelay ayarlarını belirleyinBağlantı havuzu MaxUserPort ve TcpTimedWaitDelay ayarları hızlı bir şekilde açma ve kapatma ve SQL Server çalıştıran uzak bir bilgisayara bağlantı yalnızca bir istemci bilgisayar için geçerli olan 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 havuzu devre dışı TCP/IP protokolünü kullanan bir bilgisayara Internet Information Services (IIS) sunucu üzerinde uygulanabilir. Havuzu etkinleştirilirse, MaxUserPort ve TcpTimedWaitDelay ayarlarını da gerekmez.
SQL Server çalıştıran bir bilgisayara 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 TCP/IP yuvası açılır. Bu yuva açıldığında, SQL Server Ağ Kitaplığı 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 istemci bağlantı noktası avcısı ve SQL Server çalıştıran bilgisayara erişmek için istemcinin sağladığı kimlik bilgilerini kullan. SQL Server ağ kitaplığını açın ve istemci tarafında, SQL Server Ağ Kitaplığı aracılığıyla bir yuva kapatılamadı her zaman 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 SQL Server bağlantıları TCP/IP havuzu devre dışı kapatma hızla iseniz, size hızlı bir şekilde açma ve kapatma TCP/IP Yuvaları. Başka bir deyişle, her SQL Server bağlantısı bir TCP/IP yuvası vardır. Varolan TIME_WAIT yuva kümesini hızla açıp 4000 yuva dört dakikadan az kapatırsanız, 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 tarafından ne kadar SQL Server bağlantı açar ve kapatır istemci tarafında ortaya belirlenir. İstemci bilgisayarda Netstat aracını kullanarak istemci bağlantı noktası sayısını bir TIME_WAIT durumunda olan inceleyebilirsiniz. Netstat -n bayrağı ile aşağıdaki gibi aracı ve TIME_WAIT durumunda olan istemci yuva SQL Server IP adresi sayısı. Bu örnekte, 10.10.10.20 SQL Server çalıştıran uzak 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:
Netstat - n çalıştırın ve 4000 bağlantıları IP yakın SQL Server çalıştıran hedef bilgisayarın adresi olduğunu TIME_WAIT durumunda görüyorsanız, hem varsayılan MaxUserPort ayarını artırmak ve böylece istemci anonim noktalarının çalıştırmayın TcpTimedWaitDelay ayarı azaltabilirsiniz. Örneğin, MaxUserPort 20000 için ayar yapılmış ve 30 TcpTimedWaitDelay ayarını ayarlayın. Daha düşük bir TcpTimedWaitDelay 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ı ayarlarsanız, yeni ayarın etkili olması için Microsoft Windows yeniden başlatmanız gerektiğini 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 Yuvaları bağlantılarını yapmadıkça ayarlarsanız, bu ayarların herhangi bir etkisi yoktur.
NotMaxUserPort 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
(https://support.microsoft.com/kb/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:
154628TCP/IP Yuvaları ağ kitaplığı SQL Server dinler, SQL Server Ağ Kitaplığı dinlemek Winsock API'sini kullanır. İkinci dinlemek API yuva için izin verilen biriktirme parametredir. Bu biriktirme bağlantıları dinleyici 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.
(https://support.microsoft.com/kb/154628/EN-US/ )BİLGİ: SQL günlükleri ile birden fazla TCP\IP bağlantı isteklerini 17832
SQL Server 2000 kullanan varsayılan biriktirme listesi ayarı 5 dinleyin. Bu, TCP/IP iletişim kuralı dinleme iş parçacıklarını SQL Server çalıştıran bilgisayarda dinleme API ayarlar, SQL Server çalıştıran bilgisayar 5 değeri biriktirme parametresini dinlemek Winsock API için geçtiği anlamına gelir. Bu parametre için iletilmek üzere farklı bir değer belirtmek için WinsockListenBacklog kayıt defteri anahtarı ayarlayabilirsiniz. SQL Server 2005 ile başlayarak, ağ kitaplığını SOMAXCONN değeri biriktirme listesi ayarı olarak dinlemek için API geçirir. SOMAXCONN Bu ayar için en uygun bir değer ayarlamak Winsock verir. 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 ayarlayın 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ıraya 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 istekleri geri çevrilir ö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 reddedilmiştir 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:
Kaynak bağlantı noktası 0x599 veya ondalık 1433 olduğuna dikkat edin. Paket SQL Server çalıştıran 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 biliyorsanız, yalnızca Ağ İzleyicisi izlemesinde ACK + Sıfırla paketleri 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şadığınız kesin onay olmadýðýndan görebilirsiniz olduğunu unutmayın. WinsockListenBacklog çok düşükse, bazı bağlantı denemeleri almak paketlerini kabul et bazı bağlantıları ve hemen ACK + SIFIRLAMA paketlerinin aynı zaman dilimi içinde alacak.
Çok nadir durumlarda, havuzu istemci bilgisayarlarda etkinleştirilmiş olsa bile bu ayar ayarlamak gerekebileceğini unutmayın. Birçok istemci bilgisayarda SQL Server çalıştıran tek bir bilgisayar 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.
NotWinsockListenBacklog ayarı varsa, bu ayarın etkili olması için Windows'u yeniden başlatmanız gerekmez. Sadece durdurup 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.
Makale numarası: 328476 - Last Review: 15 Mart 2015 Pazar - Gözden geçirme: 12.0
Bu makaledeki bilginin uygulandığı durum:
Machine-translated Article
Ö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
(https://support.microsoft.com/kb/328476/en-us/ )

