我们有一个 SQL Server Enterprise 2017。我想了解为什么我们SERVERPROPERTY('HadrManagerStatus')
返回 1,即使在此实例中未配置 Always On。
我的工作机器中有一个独立的本地实例。当我运行SELECT SERVERPROPERTY('HadrManagerStatus')
它时,1
即使我没有在这台机器上设置 Always On,它也会返回。从未尝试在 SQL Server 配置管理器中检查服务上的“启用始终开启”框。
我已将此实例设置为复制的发布者和分发者。我已经在这个实例上恢复了数据库,该数据库是可用性数据库的一部分。
我想我的问题是,这如何SERVERPROPERTY('HadrManagerStatus')
评估?它检查什么条件?
正如Kin的评论中提到的,如果要检查 SQL Server 配置管理器中是否选中了“启用 Always On”复选框,则应该使用此属性:
从上的文档
IsHadrEnabled
:关于其他设置(
HadrManagerStatus
),这是文档必须说的:我真的不知道“可用性组管理器”是什么,但它听起来可能是 SQL Server 的内部组件。
Tony很有帮助地指出,在 2017 年之前的非 AG 实例上,此值非零。我刚刚在未启用和设置 AG 的 SQL Server 2016 实例上验证了这一点,我得到“2”(“未启动和失败”)。
我在这里推测,但“AG 管理器”组件在 SQL Server 2017 上默认启动的事实可能与该版本中引入的无集群、 “读取规模”AG 功能有关。所以在 2017 年这个组件能够启动和运行,而之前的版本注意到缺少 WSFC 并且无法启动。
无论如何,这只是一个猜测。也许微软的某个人会过来确认一种或另一种方式。真正的答案是 Kin 指出的 - 如果您想检查 AG 是否启用,请使用
IsHadrEnabled
.