Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Mô tả thiết đặt TCP/IP, bạn có thể điều chỉnh khi SQL Server kết nối tổng hợp được kích hoạt

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để 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 nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các 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, 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.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 328476
Tóm tắt
Khi bạn sử dụng trình điều khiển SQL Server ODBC, SQL Server OLE DB provider hoặc nhà cung cấp được quản lý System.Data.SqlClient, bạn có thể vô hiệu hoá 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 tắt tổng hợp, nhấn thư viện mạng SQL Server cơ bản có thể được tăng lên nếu ứng dụng của bạn thường xuyên mở và đóng kết nối. Bài viết này mô tả các thiết đặt TCP/IP, bạn có thể điều chỉnh trong các điều kiện.
Thông tin thêm
Tắt tổng hợp có thể gây ra các trình điều khiển mạng SQL Server cơ bản để nhanh chóng mở và đóng mới kết nối ổ cắm vào máy tính đang chạy SQL Server. Bạn có thể phải thay đổi thiết đặt mặc định cổng TCP/IP cho hệ điều hành và máy tính đang chạy SQL Server để xử lý cấp áp lực 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 tổng hợp cũng có thể gây ra vấn đề liên quan đến áp lực với SQL Server giao thức khác như đường ống được đặt tên, nhưng bài viết này thảo luận các chủ đề này. Bài viết này là dành cho người dùng chuyên sâu. Nếu bạn không hiểu các chủ đề trong bài viết này, Microsoft khuyên bạn xem một cuốn sách tốt về khe cắm TCP/IP.

Lưu ý rằng Microsoft thực sự khuyên bạn luôn sử dụng tổng hợp với trình điều khiển máy chủ SQL. Bằng cách sử dụng tổng hợp nhiều cải tiến hiệu suất tổng thể phía máy tính khách và máy chủ SQL phụ khi bạn sử dụng 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ụ, kiểm tra mẫu sử dụng 20.000 SQL Server kết nối mở và đóng với tổng hợp cho phép sử dụng khoảng 160 TCP/IP mạng gói, tổng số 23,520 byte mạng hoạt động. Với tổng hợp vô hiệu hoá, kiểm tra mẫu tương tự tạo 225,129 TCP/IP mạng gói, một số 27,209,622 byte mạng hoạt động.

Lưu ý rằng khi bạn thấy những áp lực liên quan đến TCP/IP cổng vấn đề với thư viện mạng SQL Server, bạn có thể nhận được một hoặc nhiều thông báo lỗi sau khi bạn cố gắng kết nối với 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
Nhà cung cấp TCP: Chỉ sử dụng từng địa chỉ cổng (giao thức/mạng địa chỉ/cổng) thường được cho phép.
Lưu ý rằng bạn cũng có thể nhận được các thông báo 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 thông báo lỗi này nếu máy tính từ xa đang chạy SQL Server bị tắt, nếu máy tính từ xa đang chạy SQL Server không nghe khe cắm TCP/IP, nếu mạng kết nối với máy tính đang chạy SQL Server bị hỏng do cáp mạng được kéo ra hoặc nếu bạn đang gặp các vấn đề về độ phân giải DNS. Về cơ bản bất cứ thứ gì có thể gây ra các khách hàng không thể mở cổng TCP/IP cho 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, có một vấn đề liên quan đến áp lực khe cắm, sự cố xảy ra liên tục nhấn mạnh tăng và rơi. Máy tính có thể mất giờ không có lỗi, sau đó lỗi xảy ra một hoặc hai lần và máy tính rồi chạy nhiều thêm giờ không có lỗi. Ngoài ra, khi bạn gặp sự cố này, chung kết nối với SQL Server làm việc ngay lập tức một, không thành công sau, sau đó hoạt động lại ngay lập tức tiếp theo. Nói cách khác, các vấn đề liên quan đến áp lực khe cắm thường xảy ra sporadically, nhưng thực sự cố kết nối mạng với SQL Server thường xảy ra sporadically.

Hai vấn đề liên quan đến áp lực chính thường xảy ra khi bạn vô hiệu hoá tổng hợp khi bạn sử dụng giao thức SQL Server TCP/IP: bạn có thể chạy trên cổng vô danh trên máy tính hoặc bạn có thể vượt quá WinsockListenBacklog mặc định cài đặt chuyên biệt trên máy tính đang chạy SQL Server.

Để biết thêm thông tin về cổng vô danh, bấm số bài viết sau để 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 qua một cổng vô danh sau khi bạn tăng giới hạn kết nối IMAP

Điều chỉnh thiết đặt MaxUserPort và TcpTimedWaitDelay

Lưu ý rằng các cài đặt chuyên biệt MaxUserPortTcpTimedWaitDelay được áp dụng cho máy tính khách nhanh chóng mở và đóng kết nối với máy tính từ xa đang chạy SQL Server và không sử dụng kết nối tổng hợp. Ví dụ: các cài đặt chuyên biệt được áp dụng trên một máy chủ bản ghi dịch vụ thông tin Internet (IIS) đã phục vụ nhiều yêu cầu HTTP đến và được mở và đóng kết nối với máy tính từ xa đang chạy SQL Server và đã sử dụng giao thức TCP/IP tổng hợp vô hiệu hoá. Nếu tổng hợp được bật, bạn không cần phải điều chỉnh thiết đặt MaxUserPortTcpTimedWaitDelay .

Khi bạn sử dụng giao thức TCP/IP mở kết nối với máy tính đang chạy SQL Server, thư viện mạng SQL Server cơ bản mở cổng TCP/IP cho máy tính đang chạy SQL Server. Khi mở ra cổng này, thư viện mạng SQL Server không bật tuỳ chọn khe cắm TCP/IP SO_REUSEADDR . Để biết thêm thông tin về cài đặt chuyên biệt cổng SO_REUSEADDR , xem chủ đề "Setsockopt" trong Microsoft Developer Network (MSDN).

Lưu ý rằng thư viện mạng SQL Server cụ thể không bật tuỳ chọn khe cắm SO_REUSEADDR TCP/IP vì lý do bảo mật. Khi SO_REUSEADDR được kích hoạt, người dùng nguy hiểm có thể cướp cổng khách hàng SQL Server và sử dụng thông tin khách hàng cung cấp quyền truy cập vào máy tính đang chạy SQL Server. theo mặc định, vì thư viện mạng SQL Server không bật tuỳ chọn ổ cắm SO_REUSEADDR , mỗi khi bạn mở và đóng một ổ cắm qua thư viện mạng SQL Server phía máy tính khách, ổ cắm vào trạm đậu TIME_WAIT bốn phút. Nếu bạn đang nhanh chóng mở và đóng kết nối SQL Server trên TCP/IP với tổng hợp vô hiệu hoá, bạn nhanh chóng mở và đóng khe cắm TCP/IP. Nói cách khác, mỗi kết nối SQL Server có một khe cắm TCP/IP. Nếu bạn nhanh chóng mở và đóng 4000 socket trong vòng bốn phút, bạn sẽ đạt được thiết lập tối đa mặc định cho các khách hàng vô danh cổng và cố gắng kết nối ổ cắm mới không thành công cho đến hiện tại nhóm TIME_WAIT socket hết thời gian.

Phía máy tính khách, bạn có thể phải tăng MaxUserPortTcpTimedWaitDelay các thiết đặt được thảo luận trong Q319502 khi bạn đã tổng hợp vô hiệu hoá. cài đặt chuyên biệt các giá trị được xác định bởi số lượng các kết nối SQL Server mở và đóng lại xảy ra ở phía máy tính khách. Bạn có thể kiểm tra bao nhiêu cổng khách hàng đang ở trạm đậu TIME_WAIT bằng cách sử dụng công cụ Netstat trên máy tính khách. Chạy công cụ Netstat với cờ -n như sau và đếm số khe cắm máy tính khách địa chỉ IP máy chủ SQL của bạn trong một TIME_WAIT trạm đậu. 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 tính khách là 10.10.10.10 và ba thiết lập kết nối và hai kết nối đang ở trạm đậu TIME_WAIT:
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				
Nếu bạn chạy netstat -n và bạn thấy rằng gần 4000 kết nối vào địa chỉ IP của máy tính đích đang chạy SQL Server đang ở trạm đậu TIME_WAIT, bạn có thể cả tăng thiết đặt mặc định MaxUserPort và giảm TcpTimedWaitDelay thiết lập để bạn không chạy trên cổng khách hàng vô danh. Ví dụ: bạn có thể đặt thiết đặt MaxUserPort 20000 và đặt thiết đặt TcpTimedWaitDelay 30. Thiết lập TcpTimedWaitDelay thấp có nghĩa là các ổ cắm chờ ở trạm đậu TIME_WAIT ít thời gian. Thiết lập MaxUserPort cao có nghĩa là bạn có thể có nhiều ổ cắm bang TIME_WAIT.

Lưu ý rằng nếu bạn điều chỉnh thiết đặt MaxUserPort hoặc TcpTimedWaitDelay , bạn phải khởi động Microsoft Windows để cài đặt chuyên biệt mới có hiệu lực. Thiết đặt MaxUserPortTcpTimedWaitDelay cho bất kỳ máy nói chuyện với máy tính đang chạy SQL Server qua khe cắm TCP/IP. Các thiết đặt này không có hiệu lực nếu chúng được đặt trên máy tính đang chạy SQL Server, trừ khi bạn thực hiện cục bộ kết nối ổ cắm vào máy tính đang chạy SQL Server.

Lưu ý Nếu bạn điều chỉnh cài đặt chuyên biệt MaxUserPort , chúng tôi khuyên bạn đặt cổng 1434 để sử dụng bản ghi 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, hãy bấm vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
812873 Làm thế nào để đặt một loạt các cổng không lâu trên máy tính đang chạy Windows Server 2003 hoặc Windows 2000 Server

Điều chỉnh cài đặt chuyên biệt WinsockListenBacklog

Để biết thêm thông tin về SQL Server cụ thể thiết đặt kiểm nhập này, bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
154628 INF: Bản ghi SQL 17832 với nhiều yêu cầu kết nối TCP\IP
Khi thư viện mạng SQL Server lắng nghe trên khe cắm TCP/IP, thư viện mạng SQL Server sử dụng máy nghe Winsock API. Tham số thứ hai để máy nghe API là tồn đọng được cho phép các ổ cắm. Tồn đọng này đại diện cho chiều dài tối đa của hàng đợi chờ kết nối cho nghe. Khi chiều dài hàng đợi vượt quá độ dài tối đa này, thư viện mạng SQL Server ngay lập tức loại bỏ cố gắng kết nối TCP/IP khe cắm thêm. Ngoài ra, các thư viện mạng SQL Server gửi một gói dữ liệu ACK + đặt lại.

Sử dụng SQL Server 2000 một mặc định nghe tồn đọng thiết lập 5. Điều này có nghĩa là máy tính đang chạy SQL Server đi giá trị 5 tham số tồn đọng của máy nghe Winsock API khi máy 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 khoá kiểm nhập để xác định một giá trị khác được chuyển cho tham số này. Khởi động SQL Server 2005, thư viện mạng đi giá trị SOMAXCONN như cài đặt chuyên biệt tồn đọng máy nghe API. SOMAXCONN cho phép nhà cung cấp Winsock đặt tối đa giá trị hợp lý để cài đặt chuyên biệt này. Do đó, khoá kiểm nhập WinsockListenBacklog không sử dụng hoặc trong SQL Server 2005.

Tồn đọng thiết lập hoạt động như sau: giả sử một bản ghi dịch vụ bất kỳ nghe cho yêu cầu khe cắm TCP/IP đến. Nếu bạn đặt thiết đặt tồn đọng 5 và nhiều yêu cầu kết nối ổ cắm liên tục truyền trong bản ghi dịch vụ không thể đáp ứng các yêu cầu đến nhanh như họ đến. Tại thời điểm này, lớp cổng TCP/IP hàng đợi các yêu cầu đến hàng tồn đọng và bản ghi dịch vụ có thể sau đó kéo các yêu cầu trong hàng đợi này và xử lý yêu cầu đến kết nối ổ cắm. Sau khi hàng đợi đầy lên, lớp cổng TCP/IP ngay lập tức loại bỏ bất kỳ yêu cầu ổ cắm bổ sung nào đến bằng cách gửi một gói dữ liệu ACK + lại trở lại cho khách hàng. Tăng tăng kích thước hàng tồn đọng số đang chờ xử lý kết nối ổ cắm yêu cầu lớp cổng TCP/IP hàng đợi trước khi yêu cầu bị từ chối.

Lưu ý rằng thiết đặt WinsockListenBacklog dành riêng cho SQL Server. SQL Server cố gắng đọc thiết đặt kiểm nhập này khi lần đầu tiên khởi động bản ghi dịch vụ SQL Server. Nếu thiết đặt không tồn tại, mặc định 5 được sử dụng. Nếu thiết đặt kiểm nhập, SQL Server đọc cài đặt chuyên biệt và sử dụng giá trị được cung cấp thiết đặt tồn đọng khi WinSock API nghe được gọi là như khe cắm TCP/IP nghe chủ đề được đặt lên trong SQL Server.

Để xác định xem bạn đang chạy vào vấn đề này, bạn có thể chạy theo dõi giám sát mạng trên máy tính khách hoặc máy tính đang chạy SQL Server và tra cứu yêu cầu kết nối ổ cắm ngay lập tức bị từ chối với ACK + lại. Nếu bạn kiểm tra gói TCP/IP ng, bạn thấy một gói chẳng hạn như sau khi sự cố này xảy ra:
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)				
Lưu ý rằng cổng nguồn 0x599 hoặc 1433 trong thập phân. Điều này có nghĩa gói đến từ một máy tính điển hình đang chạy SQL Server và đang chạy trên cổng mặc định của 1433. Lưu ý rằng nhận trường quan trọng và cờ lại kết nối được thiết lập. Nếu bạn đã quen với lọc theo dõi giám sát mạng, bạn có thể lọc giá trị Giao thức Kiểm soát Truyền cờ theo 0x14 hệ thập lục phân để xem chỉ gói ACK + lại trong theo dõi giám sát mạng.

Lưu ý rằng bạn cũng có thể thấy tương tự như ACK + đặt lại gói 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, để xem gói dữ liệu ACK + lại không xác định xác nhận rằng bạn đang gặp sự cố này. Nếu WinsockListenBacklog quá thấp, một số kết nối lần nhận được chấp nhận gói và một số kết nối ngay lập tức nhận được gói dữ liệu ACK + lại trong cùng một khoảng thời gian.

Lưu ý rằng rất hiếm, bạn có thể điều chỉnh thiết đặt này ngay cả khi tổng hợp được bật trên máy tính khách. Ví dụ: nếu nhiều máy tính khách đang nói chuyện với một máy tính đang chạy SQL Server, nhiều cố gắng kết nối đến đồng thời có thể xảy ra bất kỳ lúc nào cụ thể ngay cả khi tổng hợp được kích hoạt.

Lưu ýNếu bạn điều chỉnh cài đặt chuyên biệt WinsockListenBacklog , bạn không phải khởi động lại Windows để cài đặt chuyên biệt này có hiệu lực. Chỉ cần dừng và khởi động lại bản ghi dịch vụ SQL Server để cài đặt chuyên biệt có hiệu lực. cài đặt chuyên biệt kiểm nhập WinsockListenBacklog là chỉ dành cho máy tính đang chạy SQL Server. Không có hiệu lực trên bất kỳ máy nói chuyện với SQL Server.

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 328476 - Xem lại Lần cuối: 03/15/2015 10:10:00 - Bản sửa đổi: 3.0

, , , , , , ,

  • kbsqlsetup kbinfo kbmt KB328476 KbMtvi
Phản hồi
tml>