Jon*_*ica 6 sql-server log-shipping
我知道目标数据库处于“恢复”状态是正常的
我还想做一些查询,以检查数据是否都是最新的。
我是否可以将它暂时置于只读、非恢复状态以检查数据,然后将其恢复到恢复状态,而不会破坏整个恢复链?
谢谢!
我建议将日志传送到STANDBY
模式而不是NORECOVERY
. 这将允许您查询辅助数据库以获取任何报告等。
使用NORECOVERY
模式时,辅助数据库将不允许任何用户访问它,因此数据库不必担心未提交的事务。日志可以恢复为当前的状态,而无需担心任何用户访问/更改内容。
当您使用STANDBY
mode 时,数据库以NORECOVERY
mode恢复,然后查看并滚动任何打开的事务。完成后,用户可以访问数据库,并且它将处于只读模式。当下一个日志恢复时,数据库断开所有用户的连接并重复回滚/转发过程,然后再次将数据库置于只读模式。起泡,冲洗,重复。
将其视为事务日志还原。当您恢复每个事务日志时,您将数据库保留在 NORECOVERY 中,以便您可以继续附加任何其他日志文件,直到您恢复到所需的点。然后,您将其设置为 RECOVERY 并且可以读取数据库。有道理?
@DenisT 提出了一个很好的观点,即必须选中“断开所有用户的连接”选项才能启动所有用户。否则,日志还原将失败。
这是一篇很棒的文章 http://askmesql.blogspot.se/2011/01/log-shipping-norecovery-vs-standby-mode.html
小智 5
我是否可以将它暂时置于只读、非恢复状态以检查数据,然后将其恢复到恢复状态,而不会破坏整个恢复链?
这个问题的关键是“打破恢复链”。
如果您想查询和验证号码,那么日志传送中的待机模式是您的最佳选择。
如果您有可用的 SQL Server 2012 企业版,那么您可以放弃登录,转而使用具有只读订阅者的可用性组。这也将达到您的要求。