我试图确定为什么DBCC DBINFO
返回的结果与错误日志中包含的结果不同。这是设置:
次要副本(只读访问——异步提交 AlwaysOn HA AG)
- 作业
02/05/2018 09:00:00 PM
成功运行,持续时间为02:22:21
- 工作中的唯一步骤是
DBCC CHECKDB(myDB)
- 当我跑步时,
DBCC DBINFO('myDB') WITH TABLERESULTS
我看到了dbi_dbccLastKnownGood 02/05/2018 00:00:40.113
。这应该是02/05/2018 11:22 PM
。 - 当我检查错误日志时,我看到
02/05/2018 11:22:09 PM DBCC CHECKDB(myDB) executed by myAccount found 0 errors and repaired 0 errors. Elapsed time : 2 hours 22 minutes 9 seconds. Internal database snapshot has split point LSN ... and first LSN ...
我决定检查同时运行 DBCC CHECKDB 的 PRIMARY REPLICA(这都是由供应商设置的)。
- 子计划成功运行
02/05/2018 00:00:00 AM
,持续时间为02:14:40
- 当我运行时,
DBCC DBINFO('myDB') WITH TABLERESULTS
我看到dbi_dbccLastKnownGood 02/05/2018 00:00:40.113
哪个与 RoR 相同,但它应该是02/05/2018 02:15 AM
. - 当我检查错误日志时,我看到
02/05/2018 02:15:12 AM DBCC CHECKDB(myDB) WITH no_infomsgs exextued by myAccount found 0 error and repaired 0 errors. Elapsed time : 2 hours 14 minutes 40 seconds. Internal database snapshot has split point LSN ... and first LSN ...
我不知道这个DBCC DBINFO
结果是从哪里来的,也不知道为什么它与 SQL 日志不匹配。我设置了一个工作,当 dbi_dbccLastKnownGood 超过 24 小时时向我发送警报。
有任何想法吗?让我知道是否需要更多信息。
正如 Erik 指出的那样,AG 副本目前是只读的,因此它无法更新此处的值。此外,如果它确实更新了值,那么下次在主服务器上更新任何内容并将日志块发送到辅助服务器时,它就会被覆盖。
工作于 2:14:40 前开始,这是最后一次已知的良好 checkdb 的时间 - 是的。然后你启动它,它运行了 2 小时 14 分钟 +/- 一些代理的东西。时间对我来说很好,这不像工作运行了 5 秒,并显示了 6 小时前的最后一件好事。
我认为问题是您希望 CHECKDB 在运行结束时显示良好的价值,而不是在执行时更新。那应该不是问题。