繁体   English   中英

用其他数据库的副本替换数据库

[英]Replace Database WIth Copy Of Other Database

作为我们测试过程的一部分,我正在尝试自动化以下内容:

  1. 删除数据库 B.
  2. 创建 DatabaseA 的备份
  3. 从 DatabaseA 的备份中重新创建 DatabaseB

我曾希望这样的事情会起作用RESTORE DATABASE DatabaseB FROM DISK = 'c:\\temp\\DatabaseA.bak' WITH REPLACE ,但事实证明想要覆盖 DatabaseA 的现有 ldf 和 mdf 文件。

Azure 的 SQL Server 似乎具有此功能: CREATE DATABASE DatabaseB AS COPY OF DatabaseA ,但我们的本地服务器不支持此功能。

有没有一种简单(和干净)的方法来做到这一点?

根据@Larnu 的反馈和更多研究,我的结论如下:

USE Master

--Drop the existing testing database
IF DB_ID('DatabaseB') IS NOT NULL
BEGIN
    ALTER DATABASE DatabaseB 
    SET SINGLE_USER 
    WITH ROLLBACK IMMEDIATE

    DROP DATABASE [DatabaseB]
END


--create a backup of the database we want
BACKUP DATABASE DatabaseA TO DISK = 'c:\temp\DatabaseA.bak'
WITH CHECKSUM, COPY_ONLY, FORMAT, INIT, STATS = 10;

-- List the files (for dev purposes only, any file listed here needs a MOVE statement below, you may have user and memory files as well as db and logs)
--RESTORE FILELISTONLY FROM DISK = 'c:\temp\Database.bak'

-- resotre the backup top
RESTORE
DATABASE [DatabaseB]  
FROM DISK = 'c:\temp\DatabaseA.bak'
WITH CHECKSUM,
MOVE 'DatabaseA' TO 'c:\temp\DatabaseB.mdf',
MOVE 'DatabaseA_log' TO 'c:\temp\DatabaseB.ldf',
RECOVERY, REPLACE, STATS = 10;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM