當我運行這個代碼時,到我的DB的連接數在connection.Open()
後增加到3。爲什麼在connection.Close()
後不能回到2?爲什麼在連接上調用dispose後連接數量不會減少?
private static void AdoNetStuff()
{
var connection = new SqlConnection(@"Initial Catalog=abook;server=.\SqlExpress;Integrated Security=true");
var sqlCommand = new SqlCommand("SELECT TOP 10 * FROM dbo.Entity", connection);
connection.Open();
sqlCommand.ExecuteReader();
sqlCommand.Dispose();
connection.Dispose();
connection.Close();
}
上面的代碼是在一個控制檯應用程序,和連接的數量不下降回落到2,直到我的控制檯應用程序關閉。
這是我如何檢查連接數。
SELECT DB_NAME(dbid) as DBName, COUNT(dbid) as NumberOfConnections, loginame as LoginName
FROM sys.sysprocesses
WHERE dbid > 0 AND DB_NAME(dbid) = 'abook'
GROUP BY dbid, loginame
我可以等一會兒才能結束控制檯應用程序,我仍然有3個連接。一旦我結束應用程序,連接數就會回落到2.
附註:開始使用'using'進行自動處理 – zerkms
@zerkms謝謝。我其實知道這一點。我已經繼承了一個應用程序,它可以在任何地方使用上述場景,而不需要進行任何處理。我們正在排除故障,並試圖更好地瞭解在這種特殊情況下發生的事情。 –
可能的重複http://stackoverflow.com/questions/6043069/closing-sql-connection-but-open-connections-keeps-incrementing –