У меня здесь большие проблемы, хорошо на моем сервере.
У меня есть ASP.net web (фреймворк 4.x), запущенный на моем сервере, все транзакции /select/update/insert сделаны с 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
Я проверяю свой код и закрываю каждый раз, когда подключаюсь, я собираюсь протестировать новый класс, но я боюсь, что проблема не устранена.
Предположим, что объединение пулов, сохраните соединения, чтобы повторно использовать их, но пока я не вижу их, повторно не используйте их всегда.
Любая идея, кроме проверки закрытия всех подключений после их использования?
SOLVED (теперь у меня есть только одно и прекрасное подключение к статусу "спящий" ):
Помимо anwser David Stratton, я хотел бы поделиться этой ссылкой, которая очень хорошо объясняет, как работает пул соединений: http://dinesql.blogspot.com/2010/07/sql-server-sleeping-status-and.html
Чтобы быть коротким, вам нужно закрыть каждое соединение (объекты соединения sql), чтобы пул соединений мог повторно использовать соединение и использовать одну и ту же строку connectinos, чтобы это было настоятельно рекомендовано использовать в одном из webConfig.
Будьте осторожны с dataReaders, к которым вы должны закрыть его подключение (вот что заставляет меня злиться пока).