【问题标题】:How to force a SQL Server 2008 database to go Offline如何强制 SQL Server 2008 数据库脱机
【发布时间】:2011-03-01 15:28:04
【问题描述】:

如何强制我的数据库脱机,而不考虑已经在使用什么或谁?

我试过了:

ALTER DATABASE database-name SET OFFLINE;

但 7 分钟后它仍然挂起。

我想要这个,因为我需要测试场景。

如果有可能?

【问题讨论】:

    标签: sql sql-server tsql sql-server-2008


    【解决方案1】:

    下线

    USE master
    GO
    ALTER DATABASE YourDatabaseName
    SET OFFLINE WITH ROLLBACK IMMEDIATE
    GO
    

    上网

    USE master
    GO
    ALTER DATABASE YourDatabaseName
    SET ONLINE
    GO
    

    【讨论】:

    • @radbyx:MSDN 说在操作数据库状态时使用master
    • @radbyx:如果您使用 MY_DATABASE,那么 ALTER DATABASE MY_DATABASE SET OFFLINE 将失败,因为您正在使用它!是的,我只是被那个刺痛了......
    • 对我不起作用:消息 5061,级别 16,状态 1,第 1 行 ALTER DATABASE 失败,因为无法在数据库“MyDatabase”上放置锁。稍后再试。消息 5069,级别 16,状态 1,第 1 行 ALTER DATABASE 语句失败。
    • 我见过这样的情况,您仍然需要使用“sp_who2 active”/“sp_whoisactive”来查看来自计划作业机器或中间层的一些顽固连接,并使用 SPID 号运行 KILL 以摆脱其中
    【解决方案2】:

    您需要使用WITH ROLLBACK IMMEDIATE 来启动其他连接,而不管什么或谁已经在使用它。

    或者使用WITH NO_WAIT 不挂起也不终止现有连接。详情见http://www.blackwasp.co.uk/SQLOffline.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多