我在這裏有一個很大的麻煩,以及我的服務器。超過100個連接到SQL Server 2008的「睡眠」狀態
我有一個運行在我的服務器上的ASP.netnet(框架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
我一直在檢查我的代碼並關閉每次我建立連接時,我要測試新的類,但是恐怕問題沒有解決。
它假設連接池,保持連接重新使用它們,但直到我看到不總是重複使用它們。
任何想法除了檢查關閉所有連接後使用它們打開?
解決(現在我只是一個和「睡眠」狀態美麗的連接):
除了大衛·斯特拉頓的anwser,我想和大家分享這個環節,有助於解釋真的很好如何連接池的工作原理:http://dinesql.blogspot.com/2010/07/sql-server-sleeping-status-and.html
只是要短,你需要關閉,以便連接池可以重新使用該連接,並使用相同connectinos字符串中的每個連接(SQL連接對象),以確保本強烈推薦使用其中一個webConfig。
小心dataReaders,你應該關閉它的連接(這是讓我瘋了一段時間)。
在[dba.stackexchange.com](http://dba.stackexchange.com)上,您可能會得到更多更好的答案,其中全職DBA掛出 –