[英]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.