Microsoft hesabıyla oturum açın
Oturum açın veya hesap oluşturun.
Merhaba,
Farklı bir hesap seçin.
Birden çok hesabınız var
Oturum açmak istediğiniz hesabı seçin.

Ö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: IMAP bağlantı sınırını artırmak sonra bir anonim bağlantı noktası üzerinden bağlanmaya çalıştığınızda 'WSAEADDRESSINUSE' 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 -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

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 bilgi: SQL 17832 ile birden fazla TCP\IP bağlantı isteklerini günlüğe kaydeder
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 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)

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.

Daha fazla yardıma mı ihtiyacınız var?

Daha fazla seçenek mi istiyorsunuz?

Abonelik avantajlarını keşfedin, eğitim kurslarına göz atın, cihazınızın güvenliğini nasıl sağlayacağınızı öğrenin ve daha fazlasını yapın.

Topluluklar, soru sormanıza ve soruları yanıtlamanıza, geri bildirimde bulunmanıza ve zengin bilgiye sahip uzmanlardan bilgi almanıza yardımcı olur.

Bu bilgi yararlı oldu mu?

Dil kalitesinden ne kadar memnunsunuz?
Deneyiminizi ne etkiledi?
Gönder’e bastığınızda, geri bildiriminiz Microsoft ürün ve hizmetlerini geliştirmek için kullanılır. BT yöneticiniz bu verileri toplayabilecek. Gizlilik Bildirimi.

Geri bildiriminiz için teşekkürler!

×