在 SQL 服务器中恢复关键数据库数据库的最佳方法

The best way to restore a database in SQL Server for critical databases

我正在尝试将数据库从生产环境移至新的生产环境。

future环境有当前prod环境的旧版本,我现在正在迁移旧版本。

是否更好,更可靠,如果:

我知道这两个都是选项,但我需要知道哪个能提供最好的结果:最佳定义为没有错误的余地,因为这是一个关键数据库和任务关键型系统。

我对差异数据库不感兴趣,我只想让当前数据库整体移动 - 干净、轻松。

更多信息:

我推荐走sp_detachdb - copy - sp_attachdb路线。

注意:

The**@keepfulltextindexfile** parameter will be removed in a future version of SQL Server.

并且此过程与 Azure 不兼容。

您写道:

I have a 2-hour window

所以它会比 sp_detachdb 更好,只是停止 SQLServer 服务 - 在新服务器上复制数据库文件,而不是使用 sp_attach_db/CREATE DATABASE .. FOR ATTACH

阅读有关此主题的 Microsoft 文档 - Move a Database Using Detach and Attach (Transact-SQL)

我最近问了一个类似的问题。我不同意另一个答案:分离和附加数据库不是一个好主意。首先,你必须让它离线——其次,你需要像另一个 post 指出的那样停止服务。 备份还原是最安全的方法。

选择使用 sp_detach_db 分离数据库,然后使用 CREATE DATABASE ... FOR ATTACH 附加它;或使用 GUI 分离和附加实际上会将数据库与源服务器分离。

Many things can go wrong here, which is why we prefer backup and restore. The backup process is online and since the source database was never made un-available in the first place, you don't risk destroying anything in case of mistakes, data corruption, or whatever other things that can happen.

看看这个 question,它能为您提供所需的一切。

在 SQL 服务器上,backup/restore 过程简单明了。如果您有一个选择还原的现有数据库,它将替换它。如果不存在,它会添加它。