【发布时间】:2012-04-17 19:29:43
【问题描述】:
我创建了一个连接和一个 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 实例不在生产环境中,请尝试重新启动它。
标签: c# sqldatareader sqlconnection