我正在测试 2016 SQL Enterprise SP2 CU7 版中新的数据库级别检测选项,它似乎没有按预期工作。我们有一个 2 节点设置、同步提交、两个节点上的自动故障转移。选中数据库级别的健康检测选项。在主节点上,我使一个驱动器脱机,其中包含 AG 中数据库的一个数据文件。我从一个从丢失的磁盘读取的表中运行了一个 select *,并得到了预期的 823 错误,该错误记录在错误日志中。跑了几次,错误日志记录了多次823。
发生这种情况时,可用性组没有像预期的那样进行故障转移。我等了大约 3 分钟,看看是否会发生故障转移,但从未发生过。我怎样才能知道数据库级别的健康检查例程设置为多久运行一次?我理解这需要根据这篇文章在 4 次连续运行中看到问题: 增强的数据库级别故障转移
我查看了AG中的健康检查超时值,是30秒。
我还查看了服务器上的故障条件级别,它设置为 On CriticalServerErrors,但据我了解,此设置完全独立于数据库级别的健康检查,它们中的任何一个都应该能够自行触发故障转移. 这个对吗?
我唯一能想到的就是防止这是 WSFC 管理器中的挂起超时。在使群集资源脱机之前,该值为 3 分钟。
知道我还应该在哪里寻找为什么这没有故障转移吗?
因为你在 2016 年,数据库级别的健康检查正在检查数据库是否在线(使辅助文件脱机不会改变)并且我们可以写入事务日志。因为这两个都是真的,你的测试通过了。这就是它在 2016 年的运作方式。
是的,见上文。这在 2017 年更改为包含更多内容。