断开与数据库的连接并设置为脱机

时间:2014-06-16 14:55:56

标签: vb.net entity-framework sql-server-2008-r2 smo

我正在使用Vb.net 2013,实体框架,SQL Server 2008R2和SMO。  我想断开与数据库的连接并设置为脱机。  我使用SMO尝试此代码:

 conn = New ServerConnection()
 conn.ServerInstance = "MyServer"
 srv = New Server(conn)
 Dim db As Database
 db = srv.Databases("MyDatabase")
 db.SetOffline 

但问题是应用程序挂在最后一行并且没有响应。  在将数据库设置为脱机之前,我应该对实体框架做些什么吗?  谢谢!

1 个答案:

答案 0 :(得分:0)

我不认为SMO的Database.SetOffline是将数据库设置为脱机的正确方法。它没有任何选项来指定无等待或断开当前用户。当然你可以尝试确保EF不保持与数据库的任何开放连接(默认情况下它不应该这样做,所以我想知道这是否会在这里发生),但你无法控制连接到数据库的任何其他进程。

我会针对服务器连接执行SQL查询,以便您可以控制命令应该执行的操作:

ALTER DATABASE MyDatabase SET OFFLINE WITH NO_WAIT

ALTER DATABASE MyDatabase SET OFFLINE WITH ROLLBACK IMMEDIATE

(或AFTER x SECONDS代替IMMEDIATE