附加/分离与备份/还原


14

我需要将数据库(作为一个整体)传输到另一台服务器,以创建一个重复的数据库来设置另一个测试环境。

我有两个选择:

  1. 在源服务器上进行完整备份/在目标服务器上进行还原;
  2. 在源服务器上分离/在目标服务器上附加。

根据我的要求,两种解决方案的优缺点是什么?

我正在使用SQL Server 2008 Enterprise。

Answers:


12

备份/还原通常应该是您选择的方法。在大多数情况下,它将更快。

您可以一致地使用它,也可以用于生产测试。

也请参阅此相关问题,其中提到了备份/还原与分离/附加:

SQL Server迁移还原备份与复制数据和日志文件

确保将WITH COPY_ONLY选项添加到备份中,以免破坏现有的维护计划备份链。


SQL 2008 Enterprise引入了备份压缩;压缩后的备份可能会大大小于100GB,因此比通过MDF / LDF进行复制更快地写出/复制/加载。
Thomas Rushton 2013年

6
  1. 卸下数据库将使其脱机。如果您需要数据库在复制到另一台服务器时保持联机状态,请进行备份。
  2. 移动和还原备份文件(.bak)可能比移动和附加多个mdf / ldf文件更容易/更轻松(就像分离数据库一样)。
  3. 从表面上看,从技术上讲,数据库分离/附加可能更快,但实际上,备份/还原可能会更快更容易。分离数据库时,首先必须使原始数据库脱机(断开所有人的连接),然后直到重新连接数据库才可用。您还必须跟踪所有文件,而使用备份将所有文件分组。

如果决定备份/还原,请在备份期间使用WITH COPY_ONLY选项,以确保不破坏任何现有维护计划的备份链。

.bak文件可以很好地压缩,因此,如果您决定进行备份,则在移动备份之前对其进行压缩可能会节省一些传输时间。


4

我会进行备份/还原,因为它会使原始数据库处于运行状态。

特别是如果您要进行“从生产到测试”的转换,那么生产数据库保持在线状态很重要。

备份/还原也是一个更安全的选择:如果文件在分离开始,副本,附加等之间损坏,该怎么办?至少如果执行备份且文件损坏,则可以重新开始。如果通过分离发生这种情况,则数据库已消失。

另外,对我来说(尽管比其他任何事情都更有感觉),备份/还原是“日常工作”,而分离/附加是在特殊情况下执行的操作。不要问我这个想法是什么;-)


1

我一直在备份/还原的“还原”部分遇到问题。我无法引用具体细节,因为我最终放弃了它,并且从那以后一直在进行分离/复制/附加。

关于分离的唯一事情是您必须确保DBMS也不会删除数据库。曾经发生过这种情况,而且还不是很漂亮。


5
DBMS不会在分离时删除数据库。如果detach删除文件并还原有问题,您在哪一家商店?
gbn

@Will:sp_detach_db不是DROP:2个独立且不相关的命令必须分别发出。分离的数据库不能通过SQL删除或删除。删除的数据库无法分离。分离没有通过代码或SSMS的“删除文件”选项。因此,我可以提出我的第一个评论,因为您必须故意选择删除DROP上文件的选项。不分离
gbn

1

我建议copy_only从DOS shell使用此方法进行备份(以免中断事务日志)

C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup目录运行:

backup.bat SQLDBNAME

其中backup.bat包含(添加换行符以提高可读性)

sqlcmd.exe -U username -P xxxxxxx -S SQL-SERVERNAME 
    -Q "BACKUP DATABASE %1 TO DISK = '%1_COPYONLY.BAK' WITH COPY_ONLY,INIT;"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.