Set-SqlAvailabilityGroup

設定可用性群組上的設定。

Syntax

Set-SqlAvailabilityGroup
   [-AutomatedBackupPreference <AvailabilityGroupAutomatedBackupPreference>]
   [-FailureConditionLevel <AvailabilityGroupFailureConditionLevel>]
   [-HealthCheckTimeout <Int32>]
   [-DatabaseHealthTrigger <Boolean>]
   [-RequiredSynchronizedSecondariesToCommit <Int32>]
   [[-Path] <String>]
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Set-SqlAvailabilityGroup
   [-AutomatedBackupPreference <AvailabilityGroupAutomatedBackupPreference>]
   [-FailureConditionLevel <AvailabilityGroupFailureConditionLevel>]
   [-HealthCheckTimeout <Int32>]
   [-DatabaseHealthTrigger <Boolean>]
   [-RequiredSynchronizedSecondariesToCommit <Int32>]
   [-InputObject] <AvailabilityGroup>
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

Set-SqlAvailabilityGroup Cmdlet 會修改 Always On 可用性群組中現有可用性群組的設定。 您可以修改自動備份喜好設定、失敗狀況層級,以及健康情況檢查逾時。 您必須在裝載主要複本的伺服器實例上執行此 Cmdlet。

範例

範例 1:變更健康情況檢查逾時期間

PS C:\> Set-SqlAvailabilityGroup -Path "SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MAinAG" -HealthCheckTimeout 120000

此命令會將名為 MainAG 的可用性群組健康情況檢查逾時屬性變更為 120 秒或兩分鐘。 如果啟用自動故障轉移,在這段時間長度之後,Always On 可用性群組會起始自動故障轉移。

範例 2:變更自動備份喜好設定

PS C:\> Set-SqlAvailabilityGroup -Path "SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MainAG" -AutomatedBackupPreference SecondaryOnly

這個指令會將名為 MainAG 的可用性群組上的自動備份喜好設定變更為 SecondaryOnly。 此可用性群組中的資料庫自動備份不會發生在主要複本上。 相反地,自動備份發生在具有最高備份優先順序的次要復本上。

範例 3:變更失敗狀況層級

PS C:\> Set-SqlAvailabilityGroup -Path "SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MainAG" -FailureConditionLevel OnServerDown

這個指令會將名為 MainAG 的可用性群組失敗條件層級變更為 OnServerDown。 如果主控主要複本的伺服器實例脫機且已啟用自動故障轉移,Always On 可用性群組會啟動自動故障轉移。

範例 4:變更必須可供交易在主要複本上認可的「SYNCHRONOUS_COMMIT」次要複本數目

# Get server and AG
PS C:\> CD 'SQLSERVER:\SQL\some-hostname\Default'
PS SQLSERVER:\SQL\some-hostname\Default> $server = Get-Item $PWD
PS SQLSERVER:\SQL\some-hostname\Default> $ag = $server.AvailabilityGroups[0]
# Alter AG with RequiredCopiesToCommit = 4
PS SQLSERVER:\SQL\some-hostname\Default> $ag | Set-SqlAvailabilityGroup -RequiredSynchronizedSecondariesToCommit 4

Note: an exception will be thrown if the -RequiredSynchronizedSecondariesToCommit parameter is used when
the target server version is SQL Server 2016 or lower.

參數

-AccessToken

用來驗證 SQL Server 存取令牌,作為使用者/密碼或 Windows 驗證的替代方案。

例如,這可用來連線至 SQL Azure DB 或使用 或使用 SQL Azure Managed InstanceService PrincipalManaged Identity

要使用的參數可以是表示令牌的字串,或是 PSAccessToken 執行 Get-AzAccessToken -ResourceUrl https://database.windows.net所傳回的物件。

這個參數是模組 v22 中的新功能。

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AutomatedBackupPreference

指定可用性群組的自動備份喜好設定。 此參數可接受的值為:

  • 主要: 指定備份一律發生在主要復本上。 此選項支援在次要複本上執行備份時無法使用的功能,例如差異備份。
  • SecondaryOnly。 指定一律不會在主要複本上執行備份。 如果主要複本是在線唯一的複本,則不會進行備份。
  • 二 次。 指定在次要復本上進行備份,除非主要複本是在線唯一的複本。 然後,備份會在主要複本上進行。
  • 無。 指定決定哪個復本執行備份時,不會考慮主要或次要狀態。 相反地,備份優先順序和在線狀態會決定哪個複本會執行備份。
Type:AvailabilityGroupAutomatedBackupPreference
Accepted values:Primary, SecondaryOnly, Secondary, None, Unknown
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

在執行 Cmdlet 前提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DatabaseHealthTrigger

指定如果可用性群組內的任何使用者資料庫複本遇到資料庫失敗狀況,是否要觸發可用性群組的自動故障轉移。

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encrypt

連接到 SQL Server 時要使用的加密類型。

這個值會對應至 Encrypt Microsoft.Data.SqlClient 驅動程式之 SqlConnection 物件上的 屬性 SqlConnectionEncryptOption

在模組的 v22 中,預設為 Optional (,以便與 v21) 相容。 在模組 v23+ 中,預設值會是「強制」,這可能會為現有的腳本建立重大變更。

這個參數是模組 v22 中的新功能。

Type:String
Accepted values:Mandatory, Optional, Strict
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FailureConditionLevel

指定可用性群組的自動故障轉移行為。 此參數可接受的值為:

  • OnServerDown。 如果 SQL Server 服務停止,則故障轉移或重新啟動。
  • OnServerUnresponsive。 如果滿足任何較低值的條件,則故障轉移或重新啟動,以及當 SQL Server 服務連線到叢集且超過 HealthCheckTimeout 閾值時,或目前處於主要角色的可用性複本處於失敗狀態時。
  • OnCriticalServerError。 如果滿足任何較低值的條件,則故障轉移或重新啟動,以及發生內部重大伺服器錯誤時,包括記憶體不足狀況、嚴重寫入存取違規或太多傾印。
  • OnModerateServerError。 如果滿足任何較低的值條件,則故障轉移或重新啟動;如果發生中度伺服器錯誤,則會包含持續性記憶體不足狀況。
  • OnAnyQualifiedFailureConditions。 如果滿足任何較低值的條件,則故障轉移或重新啟動;如果發生合格的失敗狀況,包括引擎背景工作線程耗盡,以及偵測到無法解決的死結。
Type:AvailabilityGroupFailureConditionLevel
Accepted values:OnServerDown, OnServerUnresponsive, OnCriticalServerErrors, OnModerateServerErrors, OnAnyQualifiedFailureCondition, Unknown
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HealthCheckTimeout

指定時間長度,以毫秒為單位,之後 Always On 可用性群組宣告沒有回應的伺服器狀況不良。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostNameInCertificate

用於驗證 SQL Server TLS/SSL 憑證的主機名稱。 如果您的 SQL Server 實例已啟用強制加密,而且您想要使用主機名/shortname 連線到實例,則必須傳遞此參數。 如果省略此參數,則必須將完整域名 (FQDN) 傳遞至 -ServerInstance,才能連線到啟用強制加密的 SQL Server 實例。

這個參數是模組 v22 中的新功能。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

將可用性群組指定為 AvailabilityGroup 物件,此 Cmdlet 會加以修改。

Type:AvailabilityGroup
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

指定 Cmdlet 修改之可用性資料庫的路徑。 如果您未指定此參數,此 Cmdlet 會使用目前的工作位置。

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RequiredSynchronizedSecondariesToCommit

必須可供在主要復本上認可的同步認可次要複本數目。

SYNCHRONOUS_COMMIT如果次要復本與主要複本中斷聯機一段時間,則主要復本會降級,ASYNCHRONOUS_COMMIT以避免封鎖認可。 如果主要復本變成無法使用,而且使用者想要故障轉移至其中一個次要複本,他們可能會遺失數據。 藉由將 RequiredSynchronizedSecondariesToCommit 設定為某些數位,使用者可以防止數據遺失,因為主要複本會在降級為 ASYNCHRONOUS_COMMIT時開始封鎖認可。

此設定的預設值為0,這表示主要複本永遠不會封鎖認可。 這與 SQL Server 2017 之前的行為相同。

Type:Int32
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Script

表示此 Cmdlet 會傳回 Transact-SQL 腳本,以執行此 Cmdlet 執行的工作。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TrustServerCertificate

指出通道是否會在略過憑證鏈結以驗證信任時加密。

在模組的 v22 中,預設為 $true (,以便與 v21) 相容。 在模組 v23+ 中,預設值會是 『$false』,這可能會為現有的腳本建立重大變更。

這個參數是模組 v22 中的新功能。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 Cmdlet 並不會執行。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

Microsoft.SqlServer.Management.Smo.AvailabilityGroup