Как проверить текущий размер пула SQL Server

Есть ли способ проверить текущий размер пула соединений в SQL Server? Я говорю не о максимальном размере пула соединений, а о текущем размере пула. Допустим, максимальный размер пула равен 100 и открыто 49 соединений, теперь должно отображаться либо 51 доступное, либо, возможно, 49 потребленных.

Так есть ли такой запрос?

2 ответа

Кажется, что большая часть этого материала находится за пределами того, что непосредственно доступно из DMV. Я уверен, что кто-то более информированный, чем я, может дать вам лучшие ответы.

Это так близко, как я мог получить.

SELECT  des.program_name
      , des.login_name
      , des.host_name
      , COUNT(des.session_id) [Connections]
FROM    sys.dm_exec_sessions des
INNER JOIN sys.dm_exec_connections DEC
        ON des.session_id = DEC.session_id
WHERE   des.is_user_process = 1
        AND des.status != 'running'
GROUP BY des.program_name
      , des.login_name
      , des.host_name
HAVING  COUNT(des.session_id) > 2
ORDER BY COUNT(des.session_id) DESC

Это объединит ваши подключения по логину и с каждого хоста и приложения. Это даст вам представление о том, как ваши соединения в настоящее время объединяются. Если вы знаете свою максимальную сумму из рук в руки, вы можете вычесть из нее соединения, и это может дать вам количество соединений, оставшихся в каждом пуле.

Я думаю, что для этого вам нужно использовать счетчик производительности NumberOfActiveConnections в ADO.Net (если это вариант для вас). Эта статья рассказывает об этом конкретном счетчике:

http://msdn.microsoft.com/en-us/library/ms254503(v=vs.110).aspx

По умолчанию он отключен, поэтому вам необходимо добавить некоторые настройки, чтобы включить его. Это подробно описано в следующей ссылке. Следующая ссылка также содержит пример кода для чтения счетчика.

http://msdn.microsoft.com/en-us/library/ms254503(v=vs.110).aspx

Надеюсь это поможет!

Другие вопросы по тегам