我創建了一個連接和SQLReader的,但忘了關他們兩個:如何關閉被遺忘的連接?
SqlConnection conn = new SqlConnection("connection info");
conn.Open();
string sql = "SQL command HERE";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader reader = cmd.ExecuteReader();
現在,當嘗試再次運行該代碼它總是給我這個錯誤:
System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first.
這link告訴我如何正確地打開和關閉連接,但沒有解釋如何關閉仍在運行的任何東西。我試圖在SQL服務器上查看數據庫的選項(發現沒有用)...我改變了代碼,只做了連接和閱讀器的關閉(編譯和運行但改回代碼後問題仍然存在)。
如何關閉此「鬼」連接?有什麼方法(蠻力)關閉所有正在運行的連接?
[編輯:]我不能真正解決問題。解決方法是添加MultipleActiveResultSets=true
到連接字符串
爲你應該使用備查正如許多人所寫的那樣,using()語句。但是,要解決阻塞問題,請嘗試重新啓動MSSQLSERVER實例(如果它不在生產環境中)。 – Jim 2012-04-17 19:50:56