Как я могу определить, сколько SQL-подключений у меня открыто в службе Windows?
-
01-07-2019 - |
Вопрос
Я вижу некоторые ошибки, которые указывают на "утечку соединения".То есть соединения, которые не были закрыты должным образом, и пул заканчивается.Итак, как мне инструментировать это, чтобы точно видеть, сколько из них открыто в данный момент времени?
Решение
Если вы используете .net, в PerfMon есть поставщик данных .net для SQL server.Вы можете посмотреть на NumberOfPooledConnections там
Другие советы
хранимая процедура sp_who2 в главной таблице хороша для этого со стороны базы данных.Он покажет вам подключения к базе данных.Если вам нужно больше данных, попробуйте также выполнить профилирование.
Внедрите службу, с помощью которой создаются, открываются и закрываются все соединения.Поставьте там стойку.Регистрируйтесь с помощью вашей платформы ведения журнала каждый раз, когда открывается или закрывается соединение.
вы можете использовать инструмент профилировщик для отслеживания всех существующих, а также открывающих и закрывающих соединений
Вы можете открыть профилировщик из enterprise manager
Если вы используете SQL 2000, вы можете проверить это в SQL 2000 Enterprise Manager:
Чтобы просмотреть окно текущего действия в SQL Server Enterprise Manager, разверните группа серверов, а затем разверните сервер.Разверните управление, а затем разверните текущую деятельность.Нажмите кнопку Обработать Информация.
Текущая активность сервера отображается на панели сведений.
(http://technet.microsoft.com/en-us/library/cc738560.aspx)
(Из поиска Google:текущая активность sql 2000)
Вы могли бы запустить sp_who2 в SQL Server Management Studio или анализаторе запросов, чтобы просмотреть все ваши текущие подключения.Это SQL Server.Я не уверен, какую СУБД вы используете.
Кроме того, загляните в свой код и убедитесь, что вы закрываете соединение, как только оно вам больше не нужно.Отнеситесь к этому анально!
Используйте инструкцию "using", чтобы убедиться, что ваши соединения всегда закрыты, и у вас никогда больше не возникнет этой проблемы:
using(SqlConnection connection = new SqlConnection())
{
...
} // connection is always disposed (i.e. closed) here, even if an exception is thrown