2010-06-21 360 views
9

我想確定是否有數據庫連接泄漏。 所以我需要看到打開連接的數量。 我有一個創建泄漏一些簡單的測試代碼:你如何測量打開的數據庫連接數

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,這確實在快速連續運行3次後INFACT崩潰。

爲了測量泄漏我運行性能監控和測量的SQLServer:常規統計/用戶連接:

alt text http://www.yart.com.au/stackoverflow/counter.png

然而,這些似乎是零,當我運行我的代碼:

alt text http://www.yart.com.au/stackoverflow/counter1.jpg

我應該改變什麼才能看到連接?

ANSWER

我在下面認可的答案。儘管它不使用性能工具,但它足夠我的使用。底線是我想看看打開網頁後有多少連接仍然打開,這就是訣竅。

+0

「ASP.NET SQL」是什麼意思?如果只有兩個標籤,請將它們留給標題。 – 2010-06-21 03:04:37

回答

5

你可以試着運行鍼對主查詢數據庫這樣的:

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

詳情請參閱this link

2

您是否嘗試過運行sp_who存儲過程?如果有過時的開放連接,他們應該出現在那裏。

即可顯示sa用戶進程中運行:

EXEC sp_who 'sa' 
+0

這是否意味着我無法看到性能圖中的連接? – Petras 2010-06-21 05:05:21