我正在使用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
但问题是应用程序挂在最后一行并且没有响应。 在将数据库设置为脱机之前,我应该对实体框架做些什么吗? 谢谢!
答案 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
)