Asp.net

您如何衡量打開的數據庫連接數

  • July 30, 2019

我正在嘗試確定我是否有數據庫連接洩漏。所以我需要查看打開的連接數。我有一些簡單的測試程式碼會造成洩漏:

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 次後確實會崩潰。

為了測量洩漏,我正在執行性能監視器並測量 SQLServer:一般統計資訊/使用者連接:

替代文字

(來源:yart.com.au

但是,當我執行我的程式碼時,這些似乎為零:

替代文字

(來源:yart.com.au

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

回答

我已經批准了下面的答案。儘管它不使用性能工具,但對我來說已經足夠了。底線是我想看看打開網頁後有多少連接保持打開狀態,這成功了。

您可以嘗試像這樣對主數據庫執行查詢:

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

有關更多詳細資訊,請參閱此連結

您是否嘗試過執行sp_who儲存過程?如果有過時的打開連接,它們應該出現在那裡。

要僅顯示sa使用者程序執行:

EXEC sp_who 'sa'

引用自:https://stackoverflow.com/questions/3081806