使用Liquibase,我想应用多个更改集,但首先是还原-数据库脚本,如下所示:
<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脚本清除应该从备份中还原的数据库?
发布于 2016-04-28 12:51:58
感谢@SteveDonie的评论,我找到了基于4个步骤的解决方案:
CleanDB;CleanDBCleanDB。因此,下面的代码适用于我:
<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>https://stackoverflow.com/questions/36896875
复制相似问题