Как вы измеряете количество открытых соединений с базой данных? - PullRequest
9 голосов
/ 21 июня 2010

Я пытаюсь определить, есть ли утечка соединения с базой данных.Поэтому мне нужно увидеть количество открытых соединений.У меня есть простой тестовый код, который создает утечку:

protected void Page_Load(object sender, EventArgs e)
{
  for(int i = 0; i < 100; i++)
  {
    SqlConnection sql = new SqlConnection(@"Data Source=.\SQLExpress;UID=sa;PWD=fjg^%kls;Initial Catalog=ABC");
    sql.Open();
  }

}

Обратите внимание, что .Close нет, и это приводит к аварийному завершению после трехкратного запуска.

Для измеренияутечка Я запускаю монитор производительности и измеряю SQLServer: Общая статистика / Пользовательские подключения:

альтернативный текст http://www.yart.com.au/stackoverflow/counter.png

Однако при запуске моего кода они кажутся равными нулю:

альтернативный текст http://www.yart.com.au/stackoverflow/counter1.jpg

Что я должен изменить, чтобы увидеть соединения?

ОТВЕТ

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

Ответы [ 2 ]

5 голосов
/ 21 июня 2010

Вы можете попробовать выполнить запрос к главной базе данных следующим образом:

SELECT SPID,
       STATUS,
       PROGRAM_NAME,
       LOGINAME=RTRIM(LOGINAME),
       HOSTNAME,
       CMD
FROM  MASTER.DBO.SYSPROCESSES
WHERE DB_NAME(DBID) = 'TEST' AND DBID != 0 

См. эту ссылку для более подробной информации.

2 голосов
/ 21 июня 2010

Вы пытались запустить sp_who хранимую процедуру? Если есть устаревшие открытые соединения, они должны появиться там.

Чтобы показать только sa пользовательских процессов, выполните:

EXEC sp_who 'sa'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...