如何在同一台服务器上复制sql server数据库

我有一个SQL Server 2008年,并希望做一个数据库的副本,所以我有第二个版本的数据库在同一台服务器上进行testing。

数据库复制向导不能复制数据库,它始终发送关于缺less对象的有趣错误消息(使用SMO副本)。

当我尝试进行备份并将其恢复到不同的数据库名称时,它仍然保留原始数据库的文件名并覆盖此(冲突原始数据库)。

那么如何复制一个SQL数据库呢? closuresSQL Server,复制物理文件并附加它们? 也许一个数据库拷贝的命令行工具? 不应该有一个简单的方法来复制?

首先,您需要通过执行sp_helpdb'DBNAME'并查看[Name]列来确定数据库文件的逻辑名称。 您需要识别数据和日志文件。 接下来,您需要执行完整的copy_only数据库备份。 仅复制选项不是绝对必要的,但是它可以防止日志链在原始数据库上被破坏。 接下来,您需要使用MOVE选项执行数据库恢复,为实际物理文件提供新的名称,以免与原始数据库发生冲突。

这是一个将[Scratch]数据库复制到[Scratch_New]数据库的示例。 您将需要根据您的SQL安装来调整实际的备份和数据path。

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'; 

我使用SSMS克隆数据库。

  1. 创build你想要复制的数据库的备份,并调用它,例如OriginalDB
  2. 右键单击OriginalDB,selecttask ,然后Restore DB
  3. 在“ Destination for restore ”选项中,input数据库的新名称(例如NewDB),然后在“ Source for restore ”选项中select“OriginalDB”。

这将创build一个NewDB,这是一个OriginalDB的精确副本。