Sql 用其他数据库的副本替换数据库
作为测试过程的一部分,我正在尝试自动化以下内容:Sql 用其他数据库的副本替换数据库,sql,sql-server,database-administration,Sql,Sql Server,Database Administration,作为测试过程的一部分,我正在尝试自动化以下内容: 删除数据库b 创建数据库的备份a 从数据库A的备份中重新创建数据库B 我曾希望类似的操作能够从磁盘恢复数据库DatabaseB='c:\temp\DatabaseA.bak',并替换为,但结果是要覆盖数据库a的现有ldf和mdf文件 Azure的SQL Server似乎具有以下功能:将数据库B创建为数据库A的副本,但这在我们的on-prem服务器上不受支持 有没有一种简单(干净)的方法可以做到这一点?根据@Larnu和更多研究的反馈,我的结论如下
将数据库B创建为数据库A的副本
,但这在我们的on-prem服务器上不受支持
有没有一种简单(干净)的方法可以做到这一点?根据@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;
在恢复过程中,您需要为数据和日志文件包含一个
MOVE
子句,否则它们会默认原来的路径;这就是数据库a
的文件所在的位置。这似乎是一个问题。