Как я могу определить, сколько SQL-подключений у меня открыто в службе Windows?

StackOverflow https://stackoverflow.com/questions/96431

Вопрос

Я вижу некоторые ошибки, которые указывают на "утечку соединения".То есть соединения, которые не были закрыты должным образом, и пул заканчивается.Итак, как мне инструментировать это, чтобы точно видеть, сколько из них открыто в данный момент времени?

Это было полезно?

Решение

Если вы используете .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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top