Set-SqlAvailabilityGroup
設定可用性群組上的設定。
語法
Set-SqlAvailabilityGroup
[-AutomatedBackupPreference <AvailabilityGroupAutomatedBackupPreference>]
[-FailureConditionLevel <AvailabilityGroupFailureConditionLevel>]
[-HealthCheckTimeout <Int32>]
[-DatabaseHealthTrigger <Boolean>]
[-RequiredSynchronizedSecondariesToCommit <Int32>]
[[-Path] <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[-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>]
[-ProgressAction <ActionPreference>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Set-SqlAvailabilityGroup Cmdlet 會修改 AlwaysOn 可用性群組中現有可用性群組上的設定。 您可以修改自動備份喜好設定、失敗狀況層級,以及健康情況檢查逾時。 您必須在裝載主要複本的伺服器實例上執行此 Cmdlet。
範例
範例 1:變更健康情況檢查逾時期限
PS C:\> Set-SqlAvailabilityGroup -Path "SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MAinAG" -HealthCheckTimeout 120000
此命令會將名為 MainAG
的可用性群組健康情況檢查逾時屬性變更為 120
秒或兩分鐘。
如果啟用自動故障轉移,在這段時間長度之後,AlwaysOn 可用性群組就會起始自動故障轉移。
範例 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
。
如果主控主要複本的伺服器實例脫機且已啟用自動故障轉移,AlwaysOn 可用性群組就會啟動自動故障轉移。
範例 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 驗證的替代方案。
例如,這可用來使用 Service Principal
或 Managed Identity
來連線到 SQL Azure DB
和 SQL Azure Managed Instance
。
要使用的參數可以是字串,表示令牌或 PSAccessToken
物件,如執行 Get-AzAccessToken -ResourceUrl https://database.windows.net
所傳回。
此參數是模組 v22 的新功能。
類型: | PSObject |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-AutomatedBackupPreference
指定可用性群組的自動備份喜好設定。 此參數可接受的值為:
- 主要。 指定備份一律發生在主要復本上。 此選項支援在次要複本上執行備份時無法使用的功能,例如差異備份。
- SecondaryOnly。 指定一律不會在主要複本上執行備份。 如果主要複本是在線唯一的複本,則不會進行備份。
- 二 次。 指定備份發生在次要複本上,除非主要複本是在線唯一的複本。 然後,備份會在主要複本上發生。
- 沒有。 指定決定哪個復本執行備份時,不會考慮主要或次要狀態。 相反地,備份優先順序和在線狀態會決定哪個複本會執行備份。
類型: | AvailabilityGroupAutomatedBackupPreference |
接受的值: | Primary, SecondaryOnly, Secondary, None, Unknown |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DatabaseHealthTrigger
指定如果可用性群組內的任何使用者資料庫複本遇到資料庫失敗狀況,是否要觸發可用性群組的自動故障轉移。
類型: | Boolean |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Encrypt
線上到 SQL Server 時要使用的加密類型。
此值會對應至 Microsoft.Data.SqlClient 驅動程式之 SqlConnection 物件上的 Encrypt
屬性 SqlConnectionEncryptOption
。
在模組的 v22 中,預設值為 Optional
(為了與 v21 相容)。 在模組的 v23+ 中,預設值會是 「強制」,這可能會為現有的腳本建立重大變更。
此參數是模組 v22 的新功能。
類型: | String |
接受的值: | Mandatory, Optional, Strict |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-FailureConditionLevel
指定可用性群組的自動故障轉移行為。 此參數可接受的值為:
- OnServerDown。 如果 SQL Server 服務停止,故障轉移或重新啟動。
- OnServerUnresponsive。 如果滿足任何較低值的條件,則故障轉移或重新啟動,以及當 SQL Server 服務聯機到叢集,且超過 healthCheckTimeout 臨界值時,或如果目前處於主要角色的可用性複本處於失敗狀態,則故障轉移或重新啟動。
- OnCriticalServerError。 如果滿足任何較低值的條件,則故障轉移或重新啟動,以及發生內部重大伺服器錯誤時,包括記憶體不足狀況、嚴重寫入存取違規或太多傾印。
- OnModerateServerError。 如果滿足任何較低值的條件,以及發生中度伺服器錯誤,故障轉移或重新啟動,則包含持續性記憶體不足狀況。
- OnAnyQualifiedFailureConditions。 如果滿足任何較低值的條件,則故障轉移或重新啟動,如果發生合格的失敗狀況,包括引擎背景工作線程耗盡和偵測到無法解決的死結。
類型: | AvailabilityGroupFailureConditionLevel |
接受的值: | OnServerDown, OnServerUnresponsive, OnCriticalServerErrors, OnModerateServerErrors, OnAnyQualifiedFailureCondition, Unknown |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-HealthCheckTimeout
指定時間長度,以毫秒為單位,之後 AlwaysOn 可用性群組會宣告無回應的伺服器狀況不良。
類型: | Int32 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-HostNameInCertificate
用來驗證 SQL Server TLS/SSL 憑證的主機名。 如果您的 SQL Server 實例已啟用強制加密,而且您想要使用主機名/shortname 連線到實例,則必須傳遞此參數。 如果省略此參數,則必須將完整功能變數名稱 (FQDN) 傳遞至 -ServerInstance 才能連線到啟用強制加密的 SQL Server 實例。
此參數是模組 v22 的新功能。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
指定可用性群組做為 AvailabilityGroup 物件,此 Cmdlet 會修改。
類型: | AvailabilityGroup |
Position: | 1 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Path
指定 Cmdlet 修改的可用性資料庫路徑。 如果您未指定此參數,此 Cmdlet 會使用目前的工作位置。
類型: | String |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ProgressAction
決定 PowerShell 如何回應腳本、Cmdlet 或提供者所產生的進度更新,例如 Write-Progress Cmdlet 所產生的進度列。 Write-Progress Cmdlet 會建立顯示命令狀態的進度列。
類型: | ActionPreference |
別名: | proga |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-RequiredSynchronizedSecondariesToCommit
同步認可次要複本的數目,必須可供在主要復本上認可。
如果 SYNCHRONOUS_COMMIT
次要複本與主要複本中斷聯機一段時間,則主要復本會將它降級為 ASYNCHRONOUS_COMMIT
,以避免封鎖認可。 如果主要復本變成無法使用,且使用者想要故障轉移至其中一個次要複本,他們可能會遺失數據。 藉由將 requiredSynchronizedSecondariesToCommit 設定為某些數位,使用者就可以防止數據遺失,因為如果降級為太多次要複本,則主要複本會開始封鎖認可,以 ASYNCHRONOUS_COMMIT
。
此設定的預設值為 0,這表示主要伺服器永遠不會封鎖認可。 這與 SQL Server 2017 之前的行為相同。
類型: | Int32 |
Position: | Named |
預設值: | 0 |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Script
指出此 Cmdlet 會傳回執行此 Cmdlet 所執行工作的 Transact-SQL 腳本。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-TrustServerCertificate
指出通道是否會在略過憑證鏈結以驗證信任時加密。
在模組的 v22 中,預設值為 $true
(為了與 v21 相容)。 在模組的 v23+ 中,預設值會是 『$false』,這可能會為現有的腳本建立重大變更。
此參數是模組 v22 的新功能。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
Microsoft.SqlServer.Management.Smo.AvailabilityGroup