2009-09-30 83 views
17

Tôi đang sử dụng SQL Server 2008 Enterprise + C# + ADO.Net + .Net 3.5. Tôi đang sử dụng sp_who2 hoặc sys.dm_exec_connections để tìm số kết nối hoạt động (cho tôi biết nếu phương pháp của tôi để tìm số kết nối hoạt động là sai). Đối với một số ứng dụng tiêu dùng cơ sở dữ liệu nặng, tôi có thể tìm số kết nối thậm chí còn hoạt động> 1000.bất kỳ giới hạn số lượng kết nối SQL Server nào?

Tôi tự hỏi liệu có giới hạn trên nào của số kết nối đang hoạt động của SQL Server không?

cảm ơn trước, George

Trả lời

25

Đó là một cho mỗi ví dụ, không cho mỗi cơ sở dữ liệu, cấu hình. Bạn có thể kiểm tra giá trị hiện tại trong sys.configurations và thay đổi giá trị đó bằng sp_configure. Các tùy chọn có liên quan là user connections:

Sử dụng tùy chọn kết nối người sử dụng để xác định số lượng tối đa kết nối người sử dụng đồng thời cho phép trên Microsoft SQL Server. Số lượng kết nối người dùng thực tế được phép cũng phụ thuộc vào phiên bản SQL Máy chủ bạn đang sử dụng và các giới hạn của ứng dụng hoặc ứng dụng của bạn và phần cứng . SQL Server cho phép tối đa trong số 32.767 kết nối người dùng.

1000 kết nối không phải là số cực cao. Trên các hệ thống cao cấp, máy chủ có thể nghe trên nhiều cổng affinitized to NUMA nút và có hàng trăm và hàng nghìn khách hàng được kết nối với mỗi nút.

Lưu ý rằng số lượng kết nối khác với số lượng yêu cầu , tức là. các kết nối đang hoạt động tích cực, sys.dm_exec_requests. Mỗi Yêu cầu yêu cầu một hoặc nhiều công nhân và số lượng công nhân được cấu hình với tùy chọn max worker threads.

+0

Tuyệt vời, hãy để tôi học một thời gian. :-) – George2

+1

Tôi cũng vậy :) Tôi luôn cho rằng 32k + khe người dùng sẽ không bao giờ là mối quan tâm, nhưng những chi tiết này thực sự là chi tiết tốt. –

+0

Cảm ơn Nissan, tôi đã nghiên cứu liên kết sau, http://msdn.microsoft.com/en-us/library/ms143432.aspx, sự nhầm lẫn nhất của tôi là - sự khác biệt giữa "Kết nối cho mỗi khách hàng" và "Kết nối người dùng là gì "? – George2

3

http://msdn.microsoft.com/en-us/library/ms143432.aspx

32.767 là giới hạn tối đa cho mỗi cơ sở dữ liệu.

tôi sẽ làm điều đó như sau:

SELECT 
    COUNT(*) 
FROM 
    master.dbo.syslockinfo 
WHERE 
    DB_NAME(rsc_dbid) = 'your_database_name' 
+0

Phương pháp tìm số kết nối hoạt động của tôi có chính xác không? Nếu có, bạn có nghĩa là số tôi tìm thấy không bao giờ vượt quá 32.767? – George2

+0

Tôi chỉ muốn đảm bảo số kết nối mà tôi đang tìm kiếm giống như bạn đã nói. :-) – George2

+0

Từ tài liệu MSDN được giới thiệu của bạn, sự nhầm lẫn nhất của tôi là - sự khác nhau giữa "Kết nối cho mỗi khách hàng" và "Kết nối người dùng" là gì? – George2

Các vấn đề liên quan