2009-09-30 27 views
17

Używam programu SQL Server 2008 Enterprise + C# + ADO.Net + .Net 3.5. Używam sp_who2 lub sys.dm_exec_connections, aby znaleźć aktywne numery połączeń (daj mi znać, jeśli moja metoda znalezienia aktywnych numerów połączeń jest błędna). W przypadku dużej aplikacji korzystającej z bazy danych mogę znaleźć nawet aktywną liczbę połączeń> 1000.dowolny limit liczby połączeń programu SQL Server?

Zastanawiam się, czy istnieją jakiekolwiek górne ograniczenia ograniczeń aktywnych numerów połączeń serwera SQL Server?

góry dzięki, George

Odpowiedz

25

Jest to per-instancji, a nie na bazie danych, konfiguracja. Możesz sprawdzić aktualną wartość w sys.configurations i zmienić ją na sp_configure. Odpowiednia opcja jest user connections:

Użyj opcji połączeń użytkowników do określić maksymalną liczbę jednoczesnych połączeń użytkowników dozwolonych na Microsoft SQL Server. Aktualna liczba połączeń użytkowników dozwolonych zależy również od wersji serwera SQL , z którego korzystasz, oraz od ograniczeń aplikacji i aplikacji i sprzętu . SQL Server pozwala maksymalnie 322767 połączeń użytkowników.

1000 połączeń nie jest wyjątkowo dużą liczbą. W systemach klasy high-end serwer może nasłuchiwać na wielu portach o numerach affinitized to NUMA i mieć setki tysięcy klientów podłączonych do każdego węzła.

Należy pamiętać, że liczba połączeń jest różna od liczby żądań , tj. połączenia aktywnie wykonujące coś, sys.dm_exec_requests. Każde żądanie wymaga jednego lub więcej pracowników, a liczba pracowników jest skonfigurowana za pomocą opcji max worker threads.

+0

Tak doskonała, pozwól mi się uczyć przez chwilę. :-) – George2

+1

Ja też :) Zawsze zakładałem, że 32k + czas na użytkownika nie będzie problemem, ale te szczegóły są naprawdę dobre. –

+0

Dzięki Nissan, przestudiowałem poniższy link, http://msdn.microsoft.com/en-us/library/ms143432.aspx, moje największe zamieszanie to - Jakie są różnice między "Połączenia na klienta" i "Połączenia użytkownika" "? – George2

3

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

32.767 jest maksymalna granica dla każdej bazy danych.

Chciałbym zrobić to w następujący sposób:

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

Czy moja metoda wyszukiwania aktywnego numeru połączenia jest poprawna? Jeśli tak, to czy liczba, jaką znajduję, nigdy nie powinna przekraczać 32 767? – George2

+0

Chcę tylko upewnić się, że numer połączenia, który znajduję, jest tym samym, co powiedziałeś. :-) – George2

+0

Z twojego poleconego dokumentu MSDN, moje największe zamieszanie jest - jakie są różnice między "Połączenia na klienta" i "Połączenia użytkownika"? – George2

Powiązane problemy