我需要用新的生产数据库副本replacetesting环境中的旧数据库。
testing环境实际上由两个不同服务器上的testing数据库实例组成,它们是镜像configuration(由于镜像是镜像,客户端希望testing环境就像生产一样)。
我认为这将是一个简单的问题:
但显然这还远远不够。 经过一天的摔跤(权限问题,神秘的错误,如果你重新启动SSMS(严重),我会留给你全部清单…)我终于得到了新的数据库恢复原理和testing数据库的镜像实例。
但是,在SQL Server的某处放弃了镜像configuration设置,所以我右键单击原理,select镜像,然后通过安全向导。 当我在安全向导的最后点击“完成”时,它做了这件事情,我得到了报告成功设置所有内容的屏幕(“configuration端点” – “成功”)。 紧接着是另一个窗口询问是否希望开始镜像,但是,单击该窗口上的开始,我得到以下SQL Server错误:
开始镜像时发生错误。
数据库“3DSS_TEST”未configuration为数据库镜像。 (Microsoft SQL Server,错误:1416)
所以我得到“镜像configuration成功!” 然后,作为同一过程的一部分,“镜像无法启动,因为您没有configuration!” 🙁
有任何想法吗? 任何人之前看过这个,或知道如何挑出更有用的错误信息或其他信息?
更新:解决
正如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' */
谢谢!
镜像数据库恢复后,经常会发生错误1416。 确保镜像数据库处于还原状态(NORECOVERY选项)
在镜像服务器上运行以下查询并validation数据库的状态。
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备份。
这对我很好:
RESTORE DATABASE [MyDb] FROM disk = 'C:\TEmp\MyDb' WITH REPLACE, NOrecovery /* */