[英]Replace Database WIth Copy Of Other Database
作为我们测试过程的一部分,我正在尝试自动化以下内容:
我曾希望这样的事情会起作用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.