Более 100 подключений к sql server 2008 в «спящем» состоянии

у меня большие проблемы здесь, ну, на моем сервере.

У меня на сервере работает ASP .net web (framework 4.x), все транзакции / выбор / обновление / вставка выполняются с помощью ADO.NET.

Проблема в том, что после некоторого использования (несколько обновлений / выборок / вставок) иногда я получал более 100 подключений в состоянии «спящего» при проверке подключений на сервере sql с помощью этого запроса:

SELECT 
 spid,
 a.status,
 hostname,  
 program_name,
 cmd,
 cpu,
  physical_io,
  blocked,
  b.name,
  loginame
FROM   
  master.dbo.sysprocesses  a INNER JOIN
  master.dbo.sysdatabases b  ON
    a.dbid = b.dbid where program_name like '%TMS%'
ORDER BY spid 

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

Предполагается, что пул соединений сохраняет соединения для их повторного использования, но пока я не увижу, не используйте их повторно всегда.

Любая идея, кроме проверки закрытия всех соединений, открытых после их использования?

РЕШЕНИЕ (теперь у меня только одно красивое соединение в состоянии "спящего"):

Помимо ответа Дэвид Стрэттон , я хотел бы поделиться этой ссылкой, которая очень хорошо объясняет, как работает пул соединений: http://dinesql.blogspot.com/2010/07/sql-server-sleeping-status- and.html

Чтобы быть кратким, вам необходимо закрыть каждое соединение (объекты соединения sql), чтобы пул соединений мог повторно использовать соединение и использовать ту же строку connectinos, чтобы убедиться, что это настоятельно рекомендуется использовать одну из файл webConfig.

Будьте осторожны с dataReaders, с которыми вы должны закрыть его соединение (это то, что меня некоторое время злило).

11
задан Allende 18 December 2014 в 19:38
поделиться