首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MSSQL备份恢复LIQUIBASE失败

从MSSQL备份恢复LIQUIBASE失败
EN

Stack Overflow用户
提问于 2016-04-27 17:29:42
回答 1查看 918关注 0票数 0

使用Liquibase,我想应用多个更改集,但首先是还原-数据库脚本,如下所示:

代码语言:javascript
复制
<changeSet id="0" author="me" context="test or dev">
    <sql >
       RESTORE DATABASE CleanDB
       FROM DISK = '\\SomePublic\DevDB.bak'
       WITH REPLACE;
     </sql>
</changeSet>
<!-- here many changes go -->

CleanDB是新的空现有数据库。我的连接url将DevDB指定为目标和外观:url=jdbc:sqlserver://SomePublic;databaseName=CleanDB

在执行过程中,我得到了错误:

液化库:还原无法处理数据库'CleanDB‘,因为该会话正在使用它。建议在执行此操作时使用主数据库。

那么,我的问题是:如何应用Liquibase脚本清除应该从备份中还原的数据库?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-28 12:51:58

感谢@SteveDonie的评论,我找到了基于4个步骤的解决方案:

  1. 切换到其他数据库(例如主数据库)
  2. 释放使用CleanDB
  3. 将备份应用于CleanDB
  4. 恢复使用并从主服务器切换回CleanDB

因此,下面的代码适用于我:

代码语言:javascript
复制
<sql splitStatements="true">
    use master; <!-- switch to master -->
    <!-- avoid error that CleanDB already in use -->
    alter database ${databaseName}
    set single_user with rollback immediate;
    <!-- apply backup -->
    RESTORE DATABASE CleanDB
    FROM DISK = '\\SomePublic\DevDB.bak'
    WITH REPLACE;
    <!-- Restore access to database -->
    alter database ${databaseName}
    set multi_user;
    <!-- switch back for further Liquibase operations -->
    use ${databaseName};

 </sql>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36896875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档