Mô t? thi?t đ?t TCP/IP mà b?n có th? ph?i đi?u ch?nh khi SQL Server k?t n?i h?p nhóm b? vô hi?u hóa

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 328476 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Khi b?n s? d?ng tr?nh đi?u khi?n SQL Server ODBC, SQL Server OLE DB nhà cung c?p ho?c nhà cung c?p qu?n l? System.Data.SqlClient, b?n có th? vô hi?u hóa k?t n?i t?ng h?p b?ng cách s? d?ng giao di?n l?p tr?nh ?ng d?ng tương ?ng (API). Khi b?n vô hi?u hóa h?p nhóm, s? căng th?ng trên các thư vi?n m?ng SQL Server ti?m ?n có th? đư?c tăng lên n?u ?ng d?ng c?a b?n thư?ng xuyên s? m? ra và đóng c?a các k?t n?i. Bài vi?t này mô t? thi?t đ?t TCP/IP mà b?n có th? ph?i đi?u ch?nh theo nh?ng đi?u ki?n.

THÔNG TIN THÊM

T?t chia tài nguyên có th? gây ra các tr?nh đi?u khi?n m?ng SQL Server n?m bên dư?i đ? nhanh chóng m? và đóng các k?t n?i m?i ? c?m vào máy tính đang ch?y SQL Server. B?n có th? thay đ?i thi?t đ?t ? c?m TCP/IP m?c đ?nh cho h? đi?u hành và máy tính đang ch?y SQL Server đ? đ?i phó v?i m?c đ? căng th?ng cao.

Lưu ? r?ng bài vi?t này ch? th?o lu?n v? thi?t đ?t có ?nh hư?ng đ?n các thư vi?n m?ng SQL Server khi b?n s? d?ng giao th?c TCP/IP. T?t chia tài nguyên c?ng có th? gây ra căng th?ng liên quan đ?n v?n đ? v?i giao th?c SQL Server khác như đư?c đ?t tên theo đư?ng ?ng, nhưng bài vi?t này không th?o lu?n v? ch? đ? này. Bài vi?t này là dành cho ngư?i dùng c?p cao ch?. N?u b?n không hi?u các ch? đ? trong bài vi?t này, Microsoft khuy?n cáo mà b?n nh?n th?y m?t cu?n sách t?t v? TCP/IP ? c?m.

Lưu ? r?ng Microsoft m?nh m? khuy?n cáo r?ng b?n luôn luôn s? d?ng t?ng h?p v?i các tr?nh đi?u khi?n máy ch? SQL. B?ng cách s? d?ng t?ng h?p r?t nhi?u c?i thi?n hi?u su?t t?ng th? trên c? hai phía khách hàng và SQL Server side khi b?n s? d?ng các tr?nh đi?u khi?n máy ch? SQL. B?ng cách s? d?ng t?ng h?p c?ng đáng k? làm gi?m lưu lư?ng m?ng máy tính đang ch?y SQL Server. Ví d?, m?t m?u th? nghi?m s? d?ng 20.000 SQL Server k?t n?i s? m? ra và đóng c?a v?i t?ng h?p cho phép s? d?ng kho?ng 160 gói tin m?ng TCP/IP, t?ng c?ng là 23,520 byte c?a m?ng lư?i ho?t đ?ng. V?i t?ng h?p vô hi?u hoá, cùng m?t m?u th? nghi?m t?o ra các 225,129 TCP/IP m?ng gói, t?ng c?ng là 27,209,622 byte c?a m?ng lư?i ho?t đ?ng.

Lưu ? r?ng khi b?n nh?n th?y nh?ng căng th?ng liên quan đ?n TCP/IP ? c?m v?i các v?n đ? thư vi?n m?ng SQL Server, b?n có th? nh?n m?t ho?c nhi?u các thông báo l?i sau đây khi b?n c? g?ng k?t n?i v?i m?t máy tính đang ch?y SQL Server:
SQL Server không t?n t?i ho?c truy c?p b? t? ch?i
Th?i gian ch? h?t h?n
L?i m?ng chung
TCP nhà cung c?p: Cách s? d?ng duy nh?t c?a m?i đ?a ch? ? c?m (giao th?c/m?ng đ?a ch?/c?ng) là b?nh thư?ng cho phép.
Lưu ? r?ng b?n c?ng có th? nh?n đư?c các thông đi?p l?i c? th? khi các v?n đ? đang x?y ra v?i SQL Server; Ví d?, b?n có th? nh?n các thông báo l?i này n?u máy tính t? xa đang ch?y SQL Server đóng c?a, n?u máy tính t? xa đang ch?y SQL Server không nghe TCP/IP ? c?m ? t?t c?, n?u k?t n?i m?ng đ?n máy tính đang ch?y SQL Server là b? h?ng do cáp m?ng rút lui, ho?c n?u b?n đang g?p v?n đ? v? đ? phân gi?i DNS. V? cơ b?n b?t c? đi?u g? có th? gây ra các khách hàng th?t b?i đ? m? m?t ? c?m TCP/IP đ?n máy tính đang ch?y SQL Server c?ng có th? gây ra các thông báo l?i. Tuy nhiên, v?i m?t v?n đ? liên quan đ?n căng th?ng ? c?m, v?n đ? m?t không liên t?c như nh?ng căng th?ng tăng lên và rơi. Máy tính có th? ch?y trong gi? không có l?i, sau đó l?i x?y ra m?t ho?c hai l?n, và máy tính sau đó ch?y trong nhi?u thêm gi? không có l?i. Ngoài ra, khi b?n có v?n đ? này, chung k?t n?i đ?n máy ch? SQL ho?t đ?ng m?t t?c th?, không thành công ti?p theo, sau đó làm vi?c m?t l?n n?a ngay l?p t?c ti?p theo. Nói cách khác, ? c?m căng th?ng liên quan đ?n các v?n đ? thư?ng x?y ra sporadically, nhưng v?n đ? th?c t? m?ng k?t n?i v?i SQL Server thư?ng không x?y ra sporadically.

Hai chính căng th?ng liên quan đ?n v?n đ? thư?ng x?y ra khi b?n vô hi?u hóa h?p nhóm trong khi b?n s? d?ng giao th?c TCP/IP Server SQL: b?n có th? ch?y ra kh?i vô danh c?ng trên máy khách, ho?c b?n có th? vư?t quá m?c đ?nh WinsockListenBacklog thi?t l?p trên máy tính đang ch?y SQL Server.

Đ? thêm thông tin v? vô danh c?ng, b?m vào s? bài vi?t dư?i đây đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
319502 PRB: 'WSAEADDRESSINUSE' thông báo l?i khi b?n c? g?ng k?t n?i thông qua m?t c?ng chưa xác đ?nh ngư?i sau khi b?n tăng gi?i h?n k?t n?i IMAP

Đi?u ch?nh các cài đ?t MaxUserPort và TcpTimedWaitDelay

Lưu ? r?ng các MaxUserPortTcpTimedWaitDelay thi?t đ?t đư?c áp d?ng ch? cho m?t máy tính khách hàng đó nhanh chóng m? và đóng c?a các k?t n?i đ?n máy tính t? xa mà đang ch?y SQL Server và đó không s? d?ng k?t n?i t?ng h?p. Ví d?, các thi?t đ?t đư?c áp d?ng trên m?t máy ch? Internet Information Services (IIS) mà ph?c v? m?t s? l?n các yêu c?u HTTP đ?n và đó m? và đóng c?a các k?t n?i đ?n máy tính t? xa mà đang ch?y SQL Server và đó b?ng cách s? d?ng giao th?c TCP/IP v?i t?ng h?p vô hi?u hoá. N?u t?ng h?p đư?c kích ho?t, b?n không c?n ph?i đi?u ch?nh các MaxUserPortTcpTimedWaitDelay thi?t đ?t.

Khi b?n s? d?ng giao th?c TCP/IP đ? m? k?t n?i t?i m?t máy tính đang ch?y SQL Server, thư vi?n ti?m ?n m?ng SQL Server m? m?t ? c?m TCP/IP đ?n máy tính đang ch?y SQL Server. Khi nó m? ra ? c?m này, thư vi?n m?ng SQL Server không cho phép các SO_REUSEADDR TCP/IP ? c?m tùy ch?n. Đ? bi?t thêm thông tin v? các SO_REUSEADDR socket thi?t l?p, xem ch? đ? "Setsockopt" trong Microsoft Developer Network (MSDN).

Lưu ? r?ng thư vi?n m?ng SQL Server c? th? không cho phép các SO_REUSEADDR TCP/IP ? c?m tùy ch?n cho các l? do an ninh. Khi SO_REUSEADDR Kích ho?t, m?t ngư?i s? d?ng đ?c h?i có th? cư?p m?t c?ng khách hàng cho SQL Server và s? d?ng các ch?ng ch? máy s? d?ng ngu?n cung c?p đ? truy nh?p vào máy tính đang ch?y SQL Server. Theo m?c đ?nh, b?i v? các máy ch? SQL m?ng thư vi?n không cho phép các SO_REUSEADDR tùy ch?n ? c?m, m?i khi b?n m? và đóng m?t ? c?m qua thư vi?n m?ng SQL Server phía khách hàng, các ? c?m vào m?t nhà nư?c TIME_WAIT cho b?n phút. N?u b?n nhanh chóng m? và đóng c?a các k?t n?i máy ch? SQL trên TCP/IP v?i t?ng h?p vô hi?u hóa, b?n đang nhanh chóng m? và đóng c?a ? c?m TCP/IP. Nói cách khác, m?i k?t n?i máy ch? SQL có m?t TCP/IP ? c?m. N?u b?n nhanh chóng m? và đóng 4000 ? c?m trong v?ng b?n phút, b?n s? ti?p c?n v?i thi?t l?p m?c đ?nh t?i đa cho khách hàng chưa xác đ?nh ngư?i c?ng và n? l?c m?i ? c?m k?t n?i th?t b?i cho đ?n khi t?p hi?n có c?a ? c?m TIME_WAIT th?i gian.

V? phía khách hàng, b?n có th? ph?i tăng các MaxUserPortTcpTimedWaitDelay thi?t đ?t đư?c th?o lu?n trong Q319502 khi b?n có h?p nhóm vô hi?u hoá. Các thi?t đ?t cho các giá tr? đư?c xác đ?nh b?i bao nhiêu SQL Server k?t n?i m? và đóng c?a di?n ra ? phía khách hàng. B?n có th? xem xét có bao nhiêu khách hàng c?ng đang trong tr?ng thái TIME_WAIT b?ng cách s? d?ng công c? Netstat trên máy khách. Ch?y công c? Netstat v?i các -n c? như sau, và đ?m s? lư?ng các ? c?m máy khách đ? đ?a ch? IP máy ch? SQL đư?c trong m?t nhà nư?c TIME_WAIT. Trong ví d? này, đ?a ch? IP c?a máy tính t? xa đang ch?y SQL Server là 10.10.10.20, đ?a ch? IP c?a máy khách là 10.10.10.10, và ba thành l?p các k?t n?i và hai k?t n?i đang ? tr?ng thái 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
				
N?u b?n ch?y netstat - n và b?n th?y r?ng g?n v?i 4000 các k?t n?i đ?n đ?a ch? IP c?a máy tính m?c tiêu ch?y SQL Server đang trong tr?ng thái TIME_WAIT, b?n có th? c? hai đ?u tăng m?c đ?nh MaxUserPort thi?t l?p và làm gi?m các TcpTimedWaitDelay thi?t l?p do đó b?n không ch?y ra kh?i khách hàng chưa xác đ?nh ngư?i c?ng. Ví d?, b?n có th? thi?t l?p các MaxUserPort thi?t l?p đ? 20000 và thi?t l?p các TcpTimedWaitDelay thi?t l?p đ?n 30. Th?p hơn TcpTimedWaitDelay thi?t l?p có ngh?a r?ng các ? c?m ch? thu?c TIME_WAIT ít th?i gian hơn. M?t cao hơn MaxUserPort thi?t l?p có ngh?a là b?n có th? có ? c?m b? thu?c TIME_WAIT.

Lưu ? r?ng n?u b?n đi?u ch?nh các MaxUserPort ho?c TcpTimedWaitDelay thi?t l?p, b?n ph?i kh?i đ?ng l?i Microsoft Windows đ? có thi?t đ?t m?i có hi?u l?c. Các MaxUserPortTcpTimedWaitDelay thi?t đ?t cho b?t k? máy tính khách hàng là nói chuy?n v?i m?t máy tính đang ch?y SQL Server trên TCP/IP ? c?m. Các thi?t đ?t này không có b?t k? tác d?ng n?u chúng đư?c thi?t l?p trên máy tính đang ch?y SQL Server, tr? khi b?n đang làm cho đ?a phương TCP/IP ? c?m các k?t n?i đ?n máy tính đ?a phương ch?y SQL Server.

Chú ý N?u b?n đi?u ch?nh các MaxUserPort thi?t l?p, chúng tôi đ? ngh? b?n d? tr? c?ng 1434 đ? s? d?ng d?ch v? tr?nh duy?t máy ch? SQL (sqlbrowser.exe). Để biết thêm thông tin về cách thực hiện việc này, bấm số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
812873Làm th? nào đ? d? tr? m?t lo?t các c?ng không lâu trên m?t máy tính đang ch?y Windows Server 2003 ho?c Windows 2000 Server

Đi?u ch?nh các cài đ?t WinsockListenBacklog

Đ? thêm thông tin v? cài đ?t đăng k? SQL máy ch? c? th? này, b?m vào s? bài vi?t dư?i đây đ? xem bài vi?t trong cơ s? ki?n th?c Microsoft:
154628 INF: Các b?n ghi SQL 17832 v?i yêu c?u k?t n?i nhi?u TCP\IP
Khi thư vi?n m?ng SQL Server l?ng nghe trên TCP/IP ? c?m, thư vi?n m?ng SQL Server s? d?ng các nghe Winsock API. Các tham s? th? hai cho các nghe API là backlog đư?c cho phép cho các ? c?m. Backlog này đ?i di?n cho chi?u dài t?i đa c?a hàng đ?i trong khi ch? các k?t n?i cho ngư?i nghe. Khi chi?u dài c?a hàng đ?i vư?t quá này chi?u dài t?i đa, thư vi?n m?ng SQL Server ngay l?p t?c bác b? các b? TCP/IP ? c?m n? l?c k?t n?i. Ngoài ra, các thư vi?n m?ng SQL Server s? g?i m?t gói d? li?u ACK + đ?t l?i.

S? d?ng SQL Server 2000 k?t m?c đ?nh l?ng thi?t l?p backlog c?a 5. Đi?u này có ngh?a r?ng máy tính đang ch?y SQL Server vư?t qua giá tr? 5 đ? tham s? backlog c?a các nghe Winsock API khi các nghe API thi?t l?p giao th?c TCP/IP nghe ch? đ? trên máy tính đang ch?y SQL Server. B?n có th? đi?u ch?nh WinsockListenBacklog khóa registry đ? ch? đ?nh m?t giá tr? khác nhau đư?c thông qua tham s? này. B?t đ?u t? trong SQL Server 2005, thư vi?n m?ng đi m?t giá tr? c?a SOMAXCONN như là các thi?t l?p backlog đ? các nghe API. SOMAXCONN cho phép các nhà cung c?p Winsock đ? thi?t l?p m?t giá tr? h?p l? t?i đa cho thi?t đ?t này. V? v?y, ch?a khóa s? đăng k? WinsockListenBacklog không c?n đư?c s? d?ng ho?c c?n thi?t trong SQL Server 2005.

Backlog thi?t l?p công tr?nh như sau: gi? s? m?t d?ch v? tùy ? l?ng nghe cho yêu c?u ? c?m TCP/IP đ?n. N?u b?n đ?t các thi?t l?p backlog 5 và nhi?u ? c?m k?t n?i yêu c?u liên t?c streaming t?i, các d?ch v? có th? không th? đáp ?ng các yêu c?u đ?n nhanh như h? đi vào. T?i th?i đi?m này, TCP/IP socket layer đ?i nh?ng yêu c?u này đ?n trong hàng đ?i backlog, và các d?ch v? có th? sau đó kéo các yêu c?u trong s? hàng ch? này và x? l? các yêu c?u đ?n k?t n?i ? c?m. Sau khi hàng đ?i l?p đ?y lên, TCP/IP socket layer ngay l?p t?c t? ch?i b?t c? yêu c?u thêm ? c?m đi vào b?ng cách g?i m?t gói d? li?u ACK + đ?t l?i tr? l?i cho khách hàng. Tăng các backlog hàng đ?i kích thư?c tăng s? lư?ng đang ch? k?t n?i ? c?m yêu c?u r?ng TCP/IP socket layer đ?i trư?c khi yêu c?u b? t? ch?i.

Lưu ? r?ng các WinsockListenBacklog thi?t l?p là c? th? cho SQL Server. SQL Server c? g?ng đ?c thi?t đ?t đăng k? này khi d?ch v? SQL Server l?n đ?u tiên b?t đ?u. N?u thi?t đ?t không t?n t?i, m?c đ?nh c?a 5 đư?c s? d?ng. N?u các thi?t l?p registry t?n t?i, SQL Server l?n đ?c các thi?t l?p và s? d?ng giá tr? đư?c cung c?p như các thi?t l?p backlog khi WinSock API nghe đư?c g?i là khi các ? c?m TCP/IP nghe ch? đ? đư?c thi?t l?p bên trong SQL Server.

Đ? xác đ?nh n?u b?n đang ch?y vào v?n đ? này, b?n có th? ch?y m?t d?u v?t Network Monitor trên máy khách ho?c máy tính đang ch?y SQL Server và t?m yêu c?u k?t n?i ? c?m ngay l?p t?c b? t? ch?i v?i m?t ACK + đ?t l?i. N?u b?n ki?m tra các gói TCP/IP trong màn h?nh m?ng, b?n nh?n th?y m?t gói d? li?u như sau khi v?n đ? này x?y ra:
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)
				
Lưu ? r?ng các c?ng ngu?n là 0x599, ho?c 1433 trong th?p phân. Đi?u này có ngh?a r?ng gói tin đ?n t? máy tính đi?n h?nh ch?y SQL Server và đó đang ch?y trên c?ng m?c đ?nh 1433. C?ng lưu ? r?ng các Xác nh?n l?nh v?c quan tr?ng và các Thi?t l?p l?i k?t n?i lá c? đư?c thi?t l?p. N?u b?n đ? quen thu?c v?i l?c m?t d?u v?t màn h?nh m?ng, b?n có th? l?c giá tr? TCP c? b?i 0x14 h? th?p l?c phân đ? xem ch? các gói tin c?a ACK + đ?t l?i trong d?u v?t Network Monitor.

Lưu ? b?n c?ng có th? th?y các gói d? li?u ACK + đ?t l?i tương t? n?u máy tính đang ch?y SQL Server không ch?y ? t?t c?, ho?c n?u máy tính đang ch?y SQL Server không nghe giao th?c TCP/IP, do đó, nh?n th?y ACK + đ?t l?i các gói d? li?u không ph?i là xác đ?nh xác nh?n r?ng b?n đang g?p v?n đ? này. Nếu WinsockListenBacklog là quá th?p, m?t s? k?t n?i n? l?c nh?n đư?c ch?p nh?n các gói d? li?u và m?t s? k?t n?i ngay l?p t?c nh?n đư?c các gói ACK + đ?t l?i trong khung th?i gian tương t?.

Lưu ? r?ng trong trư?ng h?p r?t hi?m, b?n có th? ph?i đi?u ch?nh cài đ?t này ngay c? khi t?ng h?p đư?c kích ho?t trên máy tính khách. Ví d?, n?u nhi?u khách hàng máy tính đang nói chuy?n v?i m?t máy vi tính đang ch?y SQL Server, m?t s? l?n các đ?ng th?i c? g?ng k?t n?i đ?n th? x?y ra b?t c? lúc nào c? th? ngay c? khi t?ng h?p đư?c kích ho?t.

Chú ý N?u b?n đi?u ch?nh các WinsockListenBacklog thi?t l?p, b?n không ph?i kh?i đ?ng l?i Windows đ? thi?t l?p này có hi?u l?c. Ch? c?n ng?ng và kh?i đ?ng l?i d?ch v? SQL Server đ? có thi?t đ?t có hi?u l?c. Các WinsockListenBacklog thi?t l?p cơ quan đăng k? là ch? cho các máy tính đang ch?y SQL Server. Nó không có b?t k? tác d?ng trên b?t k? máy tính khách hàng là nói chuy?n v?i SQL Server.

Thu?c tính

ID c?a bài: 328476 - L?n xem xét sau cùng: 28 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft ADO.NET 1.1
T? khóa: 
kbsqlsetup kbinfo kbmt KB328476 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:328476

Cung cấp Phản hồi

 

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