簡體   English   中英

關閉與SQL Server DB的連接和連接數

[英]Closing connection and number of connections to SQL Server DB

我有一個ASP.net應用程序,可以在其中查詢SQL Server數據庫。 查詢結束后,我將執行以下操作:

reader.Close();
reader.Dispose();
conn.Close();
conn.Dispose();

而且當我繼續使用SQL Server並執行以下操作時:

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NoOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
    dbid > 0
GROUP BY 
    dbid, loginame

關閉連接后,我會看到“ NoOfConnections”持續增加,並且由於打開了100多個連接,有時會出現錯誤。 如何正確關閉連接

SQL Server連接池將緩存連接。 您可以使用以下命令清除所有連接池:

conn.ClearAllPools();

有關更多信息,請參見此處

要清除特定連接的連接池,可以使用ClearPool方法。 例如:

conn.ClearPool();

有關更多信息,請參見此處

您可以通過連接字符串配置連接池的大小,例如:

Provider=SQLOLEDB;Data Source=ServerName;Integrated Security=SSPI;Min Pool Size=5; Max Pool Size=20;

您還可以關閉連接字符串中的池,例如:

Provider=SQLOLEDB;Data Source=ServerName;Integrated Security=SSPI;Pooling=false;

默認情況下,連接池為打開狀態,連接池的默認大小為100。如果客戶端連接字符串相同,則該池將嘗試並使用連接池中的連接(如果可用)。 有關更多信息,請參見此處

而不是這樣做

reader.Close();
reader.Dispose();
conn.Close();
conn.Dispose();

為什么不使用using語句? 例如,對於連接:

using (var conn = new SqlConnection("YourConnectionString"))
{
    //your code here
}

這將關閉並為您處理SqlConnection對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM