SQL Server bağlantı havuzu devre dışı bırakıldığında ayarlamak zorunda kalabilirsiniz, TCP/IP ayarlarını açıklaması

Makale çevirileri Makale çevirileri
Makale numarası: 328476 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Ö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ı ilgili uygulama programlama arabirimleri (Apı) kullanarak havuzu devre dışı bırakabilirsiniz. Havuzu devre dışı bıraktığınızda, uygulamanızın sık açar ve bağlantıları kapatır, temel SQL Server ağ kitaplığını üzerindeki yük artırılabilir. Bu makalede, bu koşullar altında ayarlamak gerekebilir belirli TCP/IP ayarları açıklanır.

Daha fazla bilgi

Havuzu devre dışı kapatma hızla açmak ve SQL Server çalıştıran bir bilgisayara yeni yuva bağlantıları kapatmak temel alınan SQL Server ağ sürücüsü neden olabilir. Işletim sistemi ve daha yüksek stres düzeyleriyle ilgili SQL Server çalıştıran bir bilgisayar için varsayılan TCP/IP yuva ayarları değiştirmeniz gerekebilir.

Not Bu makalede yalnızca TCP/IP iletişim kuralı'nı kullandığınızda ağ kitaplığı SQL Server'ı etkileyen ayarları anlatılır. Havuzu devre dışı kapatma de SQL Server gibi diğer iletişim kuralları adlandırılmış yöneltmeler ise zorlama ile ilgili sorunlara neden olabilir, ancak bu makalede, bu konuda anlatılmamaktadır. Bu makalede, yalnızca ileri düzeydeki kullanıcılar içindir. Bu makalede anlatılan konuları anlamak, TCP/IP sockets hakkında iyi bir kitap Bkz: Microsoft önerir.

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

Not: Bu zorlama 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 birkaçını alabileceğiniz
SQL Server yok veya erişim engellendi
Zaman aşımı süresi doldu.
Genel ağ hatası
TCP sağlayıcısı: Normal olarak her yuva adresi (protokol/ağ adresi/bağlantı noktası) tek bir kullanımı izin verilir.
SQL Server ile başka sorunlar ortaya, ayrıca bu özel hata iletileri alabilirsiniz olduğunu unutmayın; örneğin, ağ kablosunun çektiği çünkü SQL Server çalıştıran bir bilgisayara ağ bağlantısı kesildiğinde, SQL Server çalıştıran bir uzak bilgisayar için TCP/IP sockets hiç dinlemede değil, SQL Server çalıştıran uzak bilgisayara aşağı kapatırsanız veya DNS çözümlemesi sorunlarla karşılaşıyorsanız, bu hata iletileri alabilirsiniz. Temel olarak istemcinin SQL Server çalıştıran bilgisayara bir TCP/IP yuvası başlatılamamasına neden olabilecek bir şey da hata iletilerinin neden olabilir. Ancak, yük artar ve denk bir yuva zorlama ile ilgili sorun zaman zaman sorun oluşur. Bilgisayar saattir hatasız çalışmaya başlayabilir, daha sonra hata, bir veya iki kez ve bilgisayar sonra birkaç için daha fazla saat hatasız çalışır. Ayrıca, bu sorun, SQL Server'a Genel bağlantı bir anlık ileti çalışır, sonraki başarısız olur ve yeniden sonraki anlık çalışır. Diğer bir deyişle, yuva zorlama ile ilgili sorunlar genellikle ara_sıra oluşur, ancak SQL Server ile gerçek ağ bağlantısı sorunları genelde ara_sıra gerçekleşmez.

SQL Server TCP/IP iletişim kuralı'nı kullanırken havuzu devre dışı bıraktığınızda, iki ana zorlama ile ilgili sorunlar genellikle oluşur: Yetersiz anonim bağlantı noktaları 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 Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
319502SORUN:, IMAP bağlantı sınırını artırın, sonra anonim bir bağlantı noktası bağlanmaya çalıştığınızda 'WSAEADDRESSINUSE' hata iletisi

MaxUserPort ve TcpTimedWaitDelay ayarları

MaxUserPort ve TcpTimedWaitDelay ayarları hızla ve bağlantıları ve SQL Server çalıştıran bir bilgisayara yalnızca bir istemci bilgisayar için geçerli olan Not bağlantı havuzunu kullanmayan. Örneğin, bu ayarlar, açma ve SQL Server çalıştıran ve TCP/IP iletişim kuralını devre dışı havuzu kullanan bir uzak bilgisayar bağlantısı kapatılıyor gelen HTTP isteklerini çok sayıda hizmet verdiği ve ınternet ınformation Services (IIS) hizmet (SRV) sunucusunda geçerlidir. Havuzu etkinleştirilirse, MaxUserPort ve TcpTimedWaitDelay ayarlarını gerekmez.

SQL Server çalıştıran bir bilgisayara bağlantı için TCP/IP iletişim kuralı'nı kullandığınızda, SQL Server temel ağ kitaplığı SQL Server çalıştıran bilgisayara bir TCP/IP yuvası açar. Bu yuva açıldığında, SQL Server ağ kitaplığını SO_REUSEADDR TCP/IP yuvası seçeneği etkinleştirmez. SO_REUSEADDR yuva ayarı hakkında daha fazla bilgi için Microsoft Developer Network (MSDN) "Setsockopt" konusuna bakın.

Ağ kitaplığı SQL Server güvenlik nedenleriyle SO_REUSEADDR TCP/IP yuvası seçeneği özellikle etkinleştirmez unutmayın. SO_REUSEADDR etkinleştirildiğinde, kötü niyetli bir kullanıcının bir istemci bağlantı noktası SQL Server'a anonim olarak ele geçirip ve SQL Server çalıştıran bir bilgisayara erişmek için istemcinin sağladığı kimlik bilgilerini kullanabilirsiniz. SQL Server ağ kitaplığını açın ve istemci tarafında, SQL Server Ağ Kitaplığı aracılığıyla bir yuva kapatmak her SO_REUSEADDR yuva seçeneğini etkinleştirmez için varsayılan olarak, yuva dört dakika bir TIME_WAIT durumuna girer. Hızla açılıyor ve havuzu devre dışı, TCP/IP üzerinden SQL Server bağlantıları kapatılıyor iseniz, hızla açma ve TCP/IP yuvalarını kapatılıyor. Diğer bir deyişle, her bir SQL Server bağlantı, bir TCP/IP yuvası vardır. Varolan TIME_WAIT yuva kümesini hızla açmak ve dört dakikadan az 4000 yuva kapatın, istemcinin anonim bağlantı noktaları için varsayılan en büyük ayar ulaşabileceği ve kadar yeni yuva bağlantı girişimleri başarısız zaman aşımına uğradı.

Istemci tarafında, devre dışı havuzu varsa, Q319502'de açıklanan MaxUserPort ve TcpTimedWaitDelay ayarlarını artırmanız gerekebilir. Bu değerler ayarlarını açar ve kapatır istemci tarafında ortaya kaç SQL Server bağlantısı tarafından belirlenir. Kaç istemci bağlantı noktaları, istemci bilgisayarda Netstat aracını kullanarak bir TIME_WAIT durumunda olduğu inceleyebilirsiniz. -N bayrağıyla, aşağıdaki gibi Netstat aracını çalıştırın ve SQL Server IP adresiniz için bir TIME_WAIT durumunda olan istemci yuva sayısını. Bu örnekte, SQL Server çalıştıran uzak bilgisayarın IP adresini 10.10.10.20 ise, istemci bilgisayarın IP adresini 10.10.10.10 ve üç kurulan bağlantıları ve iki bağlantı, bir TIME_WAIT durumunda olduğu:
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 yakın 4000 bağlantıları için IP adresi, SQL Server'ın çalıştığı hedef bilgisayarın kaydedileceğini bir TIME_WAIT durumunda görmek, hem varsayılan MaxUserPort anahtarı ayarını artırın ve böylece istemci dışında anonim bağlantı noktaları'nı çalıştırmayın TcpTimedWaitDelay ayarını azaltın. Örneğin, MaxUserPort ayarı için 20000 ve TcpTimedWaitDelay ayar 30'a ayarlayın. Daha düşük BIR TcpTimedWaitDelay ayarı yuvaları TIME_WAIT durumunda daha az süre bekleme anlamına gelir. MaxUserPort daha yüksek ayarları, daha fazla yuva TIME_WAIT durumunda olabileceği anlamına gelir.

MaxUserPort veya TcpTimedWaitDelay ayarı olarak ayarlarsanız, Microsoft Windows'un yeni ayarın etkili olabilmesi için yeniden başlatmalısınız unutmayın. SQL Server TCP/IP yuvaları çalışan bir bilgisayara konuşurken herhangi bir istemci bilgisayar MaxUserPort ve TcpTimedWaitDelay ayarları içindir. SQL Server çalıştıran bir yerel bilgisayar için yerel TCP/IP yuvası bağlantıları yapmadıkça, SQL Server çalıştıran bilgisayarda ayarlanmışsa, bu ayarları herhangi bir etkisi yoktur.

NotMaxUserPort ayarı olarak ayarlarsanız, SQL Server Browser (sqlbrowser.exe) hizmeti tarafından kullanılacak bağlantı noktası 1434'i rezerve öneririz. Bunu yapma 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:
812873Windows Server 2003 veya Windows 2000 Server çalışan 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 Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
154628BILGI: SQL Günlükleri 17832 ile birden çok TCP\IP bağlantı istekleri
Ağ kitaplığı SQL Server TCP/IP yuvalarını dinleyen dinleme Winsock API SQL Server ağ kitaplığını kullanır. Ikinci parametre için dinleme API, yuva için izin verilen bekleme listesi olur. Bu bekleme listesi, sıra dinleyici bağlantılarda bekleyen en çok uzunluğunu gösterir. Sıra uzunluğu bu en büyük uzunluğu aşarsa, SQL Server Ağ kitaplığı, daha çok TCP/IP yuvası bağlantı girişimleri hemen reddeder. Ayrıca, SQL Server Ağ kitaplığı, bir ACK + RESET paketi gönderir.

SQL Server 2000 kullanan bir varsayılan bekleme listesi ayarı 5'i dinler. Bu, SQL Server çalıştıran bilgisayardaki TCP/IP Protokolü dinleme iş dinleme API ayarlar, SQL Server çalıştıran bilgisayar değeri 5 dinleme Winsock API, bekleme listesi parametresi geçirmeden olduğunu gösterir. 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 bekleme listesi ayarı olarak dinlemek için API geçirir. SOMAXCONN, bu ayar için en uygun bir değer ayarlamak Winsock sağlayıcı sağlar. Bu nedenle, WinsockListenBacklog kayıt defteri anahtarı artık kullanılan veya SQL Server 2005'te gerekli.

Çalışır gibi ayarlama bekleme listesi: gelen TCP/IP yuvası istekleri için dinlemede olan rasgele bir hizmet olduğunu varsayın. Bekleme listesi ayarı'i 5 olarak ayarlayın ve birçok Yuva bağlantı istekleri sürekli olarak akış, hizmetin girdiklerinde gibi hızlı gelen istekleri yanıtlayamayacak mümkün olabilir. Bu noktada, TCP/IP Yuva Katmanı bekleme listesi sıradaki gelen bu istekleri sıraya alır ve hizmetin daha sonra istekler, sıranın çekme ve gelen Yuva bağlantı isteğini işleme. Sıra doldurur sonra TCP/IP Yuva Katmanı, istemciye bir ACK + RESET paketi göndererek gelen herhangi bir ek yuva istekleri hemen reddeder. Bekleme listesi sıra boyutu artar istekleri sayısı yuva bağlantısı bekleyen istekleri geri çevrilir önce TCP/IP Yuva Katmanı kuyruklar artırma.

SQL Server'a özgü WinsockListenBacklog ayarı olduğunu unutmayın. SQL Server, SQL Server hizmetini ilk kez açıldığında, bu kayıt defteri ayarı okumaya çalışır. Varsayılan 5 değerini, ayar yoksa kullanılır. Kayıt defteri ayarı varsa, SQL Server ayarı okur ve WinSock API dinlerken bekleme listesi ayarı denir, TCP/IP yuvası dinleme iş parçacıklarını ayarlanmış olarak sağlanan değer kullanır SQL Server içinde.

Bu sorun ile karşılaştınız çalıştırıp çalıştırmadığınızı belirlemek için <a0></a0>, istemci veya SQL Server çalıştıran bilgisayarda, bir ağ izleyicisi izlemesi çalıştırın ve bir ACK + RESET ile hemen reddedilir Yuva bağlantı isteklerini arayın. TCP/IP paketleri ağ izleyicisi'nde incelerseniz, bu sorunun oluşmasını tıklattığınızda aşağıdaki gibi bir paketin görürsünü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)
				
kaynak bağlantı noktası 0x599 veya ondalık 1433 olduğunu unutmayın. Paket ve SQL Server çalıştıran tipik bir bilgisayardan gelen anlamına gelir, 1433 varsayılan bağlantı noktası üzerinde çalışıyor. Ayrıca, merkeze alındı alanı önemli ve Bağlantıyı sıfırla bayraklarının ayarlandığını unutmayın. Bir ağ izleyicisi izlemesi süzme işlemiyle biliyorsanız, yalnızca ağ izleyicisi izlemesi ACK + RESET paketleri Bkz: onaltılık 0x14 tarafından TCP Flags değeri süzebilirsiniz.

Da benzer ACK + RESET paketleri SQL Server çalıştıran bilgisayar tüm çalışmıyorsa veya SQL Server çalıştıran bilgisayar, TCP/IP protokolüne dinlemiyor; bu nedenle, bu sorunu yaşıyorsunuz kesin onay ACK + RESET paketleri görme değil görebilirsiniz olduğunu unutmayın. WinsockListenBacklog çok düşükse, girişimleri alma bazı bağlantı kabul paketlerinin ve bazı bağlantılar aynı olan süre hemen ACK + RESET paketleri al.

Çok nadir durumlarda, istemci bilgisayarlarda havuzu etkinleştirilmiş olsa bile bu ayar ayarlamak gerekebileceğini unutmayın. Birçok istemci bilgisayar, SQL Server çalıştıran tek bir bilgisayara konuştuğunuz, havuzu etkinleştirilmiş olsa bile, çok sayıda aynı anda gelen bağlantı denemelerinin belirli zaman oluşabilir.

NotWinsockListenBacklog ayarı olarak ayarlarsanız, etkili olması için bu ayar için Windows'u yeniden başlatmanız gerekmez. Yalnızca durdurmak ve ayarın etkinleşmesi SQL Server hizmetini yeniden başlatın. WinsockListenBacklog kayıt defteri ayarını, yalnızca SQL Server çalıştıran bilgisayar için ' dir. SQL Server'a konuşurken herhangi bir istemci bilgisayarda herhangi bir etkisi yoktur.

Özellikler

Makale numarası: 328476 - Last Review: 1 Ocak 2009 Perşembe - Gözden geçirme: 11.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 3.7 için Microsoft ODBC Sürücüsü
  • Microsoft OLE DB Provider for SQL Server
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft ADO.NET 1.0
  • 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
Anahtar Kelimeler: 
kbmt kbinfo KB328476 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:328476

Geri Bildirim Ver

 

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