SERVERPROPERTY(‘HadrManagerStatus’) 等於 1,即使未配置 Always On
我們有一個 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
.