我有一个 SQL Server 2008 并且想要制作一个数据库的副本,所以我有一个数据库的第二个版本,用于在同一台服务器上进行测试。
数据库复制向导无法复制数据库,它总是发送有关丢失对象的有趣错误消息(使用 SMO 复制)。
当我尝试进行备份并以不同的数据库名称恢复它时,它仍然保留原始数据库的文件名并覆盖它(使原始数据库崩溃)。
那么如何复制 SQL 数据库呢?关闭 SQL Server,复制物理文件并附加它们?也许是用于数据库复制的命令行工具?不应该有一种简单的方法来制作副本吗?
我有一个 SQL Server 2008 并且想要制作一个数据库的副本,所以我有一个数据库的第二个版本,用于在同一台服务器上进行测试。
数据库复制向导无法复制数据库,它总是发送有关丢失对象的有趣错误消息(使用 SMO 复制)。
当我尝试进行备份并以不同的数据库名称恢复它时,它仍然保留原始数据库的文件名并覆盖它(使原始数据库崩溃)。
那么如何复制 SQL 数据库呢?关闭 SQL Server,复制物理文件并附加它们?也许是用于数据库复制的命令行工具?不应该有一种简单的方法来制作副本吗?
首先,您需要通过执行 sp_helpdb 'DBNAME' 并查看 [Name] 列来确定数据库文件的逻辑名称。您需要识别数据和日志文件。接下来,您需要执行完整的 copy_only 数据库备份。仅复制选项不是绝对必要的,但它可以防止原始数据库上的日志链被破坏。接下来,您需要使用 MOVE 选项执行数据库恢复,为实际的物理文件赋予新名称,这样它们就不会与您的原始数据库冲突。
这是一个将 [Scratch] 数据库复制到 [Scratch_New] 数据库的示例。您将需要根据您的 SQL 安装调整实际的备份和数据路径。
我使用 SSMS 克隆数据库。
task
,然后选择Restore DB
。Destination for restore
中,输入数据库的新名称(例如 NewDB),然后在选项中Source for restore
选择 OriginalDB。这将创建一个 NewDB,它是 OriginalDB 的精确副本。