成功配置 SQL Server 进行数据库镜像后,出现错误,提示未配置数据库镜像

成功配置 SQL Server 进行数据库镜像后,出现错误,提示未配置数据库镜像

我需要用生产数据库的新副本替换我们测试环境中的旧数据库。

测试环境实际上由两个测试数据库实例组成,位于两台不同的服务器上,采用镜像配置(之所以有镜像,是因为生产有镜像,而且客户希望测试环境与生产环境一样)。

我以为这会是一个简单的问题:

  • 获取生产数据库的备份(.bak 文件)
  • 暂时禁用测试数据库的镜像
  • 从(生产)备份中覆盖(即恢复)它们
  • 重新激活镜像

但显然这还不够。经过一天的折腾(权限问题、神秘错误、重启 SSMS 后问题就会消失(认真的说,我就不列出全部列表了...)我终于将新数据库恢复到了测试数据库的主实例和镜像实例上。

然而,SQL Server 不知怎么地放弃了镜像配置设置,所以我右键单击了该原则,选择了镜像,然后直接进入了安全向导。当我在安全向导的最后单击“完成”时,它完成了它的工作,我得到了一个屏幕,报告所有设置都已成功(“配置端点”-“成功”)。紧接着是另一个窗口,询问我是否希望开始镜像,但是,单击该窗口上的“开始”时,我收到以下 SQL Server 错误:

开始镜像时发生错误。

数据库“3DSS_TEST”未配置为数据库镜像。(Microsoft SQL Server,错误:1416)

所以我得到了“镜像配置成功!”然后,作为同一过程的一部分,“镜像无法启动,因为您没有配置它!” :(

有什么想法吗?有人见过这种情况吗?或者知道如何找出更有用的错误消息或其他信息吗?

更新:已解决
正如 Brian 下面所说,我使用错误的恢复选项恢复了镜像数据库,正确的方法是:

RESTORE DATABASE [MyDb]
FROM disk = 'C:\TEmp\MyDb_LIVE_Prod_backup_2010-06-18_for_test_server.bak'
WITH
REPLACE,
NOrecovery /* This should be 'norecovery', my problem was I used 'recovery' */

谢谢!

答案1

错误 1416 通常发生在镜像数据库已恢复时。确保镜像数据库处于“正在还原”状态(NORECOVERY 选项)

在镜像服务器上运行以下查询并验证数据库的状态。

select database_id, user_access_desc, state_desc, recovery_model_desc, is_broker_enabled, log_reuse_wait_desc from sys.databases where name = 'database'

如果镜像数据库处于 ONLINE 状态,则需要在设置镜像伙伴之前使用 NORECOVERY 选项再次恢复数据库和后续的 T-Log 备份。

答案2

这对我很有帮助:

RESTORE DATABASE [MyDb]
FROM disk = 'C:\TEmp\MyDb'
WITH
REPLACE,
NOrecovery /* */

相关内容