Sql-Server

SERVERPROPERTY(‘HadrManagerStatus’) 等於 1,即使未配置 Always On

  • September 13, 2019

我們有一個 SQL Server Enterprise 2017。我想了解為什麼我們SERVERPROPERTY('HadrManagerStatus')返回 1,即使在此實例中未配置 Always On。

我的工作機器中有一個獨立的本地實例。當我執行SELECT SERVERPROPERTY('HadrManagerStatus')它時,1即使我沒有在這台機器上設置 Always On,它也會返回。從未嘗試在 SQL Server 配置管理器中檢查服務上的“啟用始終開啟”框。

我已將此實例設置為複制的發布者和分發者。我已經在這個實例上恢復了數據庫,該數據庫是可用性數據庫的一部分。

我想我的問題是,這如何SERVERPROPERTY('HadrManagerStatus')評估?它檢查什麼條件?

正如Kin的評論中提到的,如果要檢查 SQL Server 配置管理器中是否選中了“啟用 Always On”複選框,則應該使用此屬性:

SELECT SERVERPROPERTY('IsHadrEnabled');

從上的文件IsHadrEnabled

此伺服器實例上啟用了 Always On 可用性組。

關於其他設置(HadrManagerStatus),這是文件必須說的:

指示 Always On 可用性組管理器是否已啟動。

我真的不知道“可用性組管理器”是什麼,但它聽起來可能是 SQL Server 的內部組件。

Tony很有幫助地指出,在 2017 年之前的非 AG 實例上,此值非零。我剛剛在未啟用和設置 AG 的 SQL Server 2016 實例上驗證了這一點,我得到“2”(“未啟動和失敗”)。

我在這裡推測,但“AG 管理器”組件在 SQL Server 2017 上預設啟動的事實可能與該版本中引入的無集群、 “讀取規模”AG 功能有關。所以在 2017 年這個組件能夠啟動和執行,而之前的版本注意到缺少 WSFC 並且無法啟動。

無論如何,這只是一個猜測。也許微軟的某個人會過來確認一種或另一種方式。真正的答案是 Kin 指出的 - 如果您想檢查 AG 是否啟用,請使用IsHadrEnabled.

引用自:https://dba.stackexchange.com/questions/248735