【问题标题】:Disconnect from database and set offline断开与数据库的连接并设置为脱机
【发布时间】:2014-06-16 14:55:55
【问题描述】:

我正在使用 Vb.net 2013、Entity Framework、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 

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

【问题讨论】:

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


    【解决方案1】:

    我不认为 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

    【讨论】:

    • 如何确保 EF 不保留任何打开的连接?
    • 不用担心这个,除非你自己故意打开连接。
    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    相关资源
    最近更新 更多