【发布时间】:2015-07-17 12:30:24
【问题描述】:
我想关闭与 SQL Server 的现有连接,以便可以在该数据库上进行恢复。我正在使用实体框架。我尝试执行
alter database YourDb
set single_user with rollback immediate
然后我得到一个异常说
连接没有关闭
我不明白为什么不允许关闭连接?
这张图片显示了完整的异常
这是方法,
public void dbQueueryExctr(string queuery)
{
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
using (SqlConnection connectionx = new SqlConnection(CONNECTIONSTRING))
{
connectionx.Open();
//connectionx.Open(); // Removed
cmd.CommandText = queuery;
cmd.CommandType = CommandType.Text;
cmd.Connection = connectionx;
reader = cmd.ExecuteReader();
connectionx.Close();
}
编辑: 我删除了第一个 .Open()。现在我只有 Open()
【问题讨论】:
-
您是否连接到数据库 :-),我希望您需要连接到数据库所在的 sql 服务器实例的主数据库才能运行和更改数据库命令。另见stackoverflow.com/questions/7197574/…
-
你为什么要给
.Open()打两次电话? -
如果你使用实体框架,你为什么使用
SqlConnection? -
现在只有在你应该得到一个不同的错误时才会调用 open 。我会拿走所有的开放,看看你得到什么错误。无论如何,您在此问题上发布的错误不是关闭连接的直接问题,而是执行查询的问题。如果您输入
SELECT * FROM TABLE_NAME(其中 TABLE_NAME 是数据库中的一个表),您会遇到同样的问题。从简单开始,让它发挥作用,然后尝试增加复杂性。 -
您能否恢复代码 sn-p 中的编辑?由于人们(像我一样)会寻找与他们相似的问题,这会带来混乱。如果我马上看到你曾经有 2 个 Open() 语句,我可以跳过这个问题。您不必删除错误即可显示所有修复,答案会显示修复。
标签: c# sql-server database entity-framework restore