我有一个server 2008,并希望复制一个数据库,所以我已经有了第二个版本的数据库,以便在同一台服务器上进行测试。
数据库副本向导无法复制数据库,它总是发送关于丢失对象的有趣错误消息(使用SMO副本)。
当我尝试进行备份并以不同的数据库名称还原它时,它仍然保留原始数据库的文件名并重写它(破坏原始数据库)。
那么,如何复制SQL数据库呢?关闭Server,复制物理文件并附加它们?也许是数据库复制的命令行工具?难道不应该有一个简单的复制方法吗?
发布于 2013-10-18 15:27:18
首先,您需要通过执行sp_helpdb 'DBNAME‘来确定数据库文件的逻辑名称,并查看名字列。您需要识别数据和日志文件。接下来,需要执行完整的copy_only数据库备份。“只复制”选项并不是绝对必要的,但它可以防止原始数据库中的日志链被破坏。接下来,您需要执行数据库还原,使用MOVE选项为实际的物理文件提供新的名称,这样它们就不会与原始数据库冲突。
下面是一个将划痕数据库复制到划痕_新的数据库的示例。您需要根据SQL安装来调整实际的备份和数据路径。
sp_helpdb 'Scratch'
-- From the resultset of this procedure I learned that the logical
-- data file name is 'Scratch' and the logical log file name is 'Scratch_log'.
BACKUP DATABASE [Scratch]
TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Scratch_Full_Copy.bak' WITH COPY_ONLY
RESTORE DATABASE [Scratch_New]
FROM DISK='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\Scratch_Full_Copy.bak'
WITH MOVE 'Scratch' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ScratchNew.mdf',
MOVE 'Scratch_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ScratchNew_Log.ldf'; 发布于 2017-03-08 14:17:41
我使用SSMS克隆DBs。
task,然后选择Restore DB.Destination for restore中,放置DB的新名称(例如,NewDB),并在选项Source for restore中选择OriginalDB。这将创建一个NewDB,它是OriginalDB的精确副本。
https://serverfault.com/questions/547005
复制相似问题