共用方式為


New-SqlAvailabilityGroup

建立可用性群組。

語法

ByPath (預設值)

New-SqlAvailabilityGroup
    [-Name] <String>
    [[-Path] <String>]
    -AvailabilityReplica <AvailabilityReplica[]>
    [-Database <String[]>]
    [-AutomatedBackupPreference <AvailabilityGroupAutomatedBackupPreference>]
    [-FailureConditionLevel <AvailabilityGroupFailureConditionLevel>]
    [-HealthCheckTimeout <Int32>]
    [-BasicAvailabilityGroup]
    [-ContainedAvailabilityGroup]
    [-ReuseSystemDatabases]
    [-DatabaseHealthTrigger]
    [-DtcSupportEnabled]
    [-ClusterType <AvailabilityGroupClusterType>]
    [-RequiredSynchronizedSecondariesToCommit <Int32>]
    [-Script]
    [-AccessToken <PSObject>]
    [-TrustServerCertificate]
    [-HostNameInCertificate <String>]
    [-Encrypt <String>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

ByObject

New-SqlAvailabilityGroup
    [-Name] <String>
    [-InputObject] <Server>
    -AvailabilityReplica <AvailabilityReplica[]>
    [-Database <String[]>]
    [-AutomatedBackupPreference <AvailabilityGroupAutomatedBackupPreference>]
    [-FailureConditionLevel <AvailabilityGroupFailureConditionLevel>]
    [-HealthCheckTimeout <Int32>]
    [-BasicAvailabilityGroup]
    [-ContainedAvailabilityGroup]
    [-ReuseSystemDatabases]
    [-DatabaseHealthTrigger]
    [-DtcSupportEnabled]
    [-ClusterType <AvailabilityGroupClusterType>]
    [-RequiredSynchronizedSecondariesToCommit <Int32>]
    [-Script]
    [-AccessToken <PSObject>]
    [-TrustServerCertificate]
    [-HostNameInCertificate <String>]
    [-Encrypt <String>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

New-SqlAvailabilityGroup Cmdlet 會在 AlwaysOn 可用性群組中建立可用性群組。

InputObject 或 Path 參數會指定裝載初始主要複本的伺服器。

Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.

範例

範例 1:建立可用性群組

PS C:\> $PrimaryServer = Get-Item "SQLSERVER:\SQL\PrimaryServer\Instance22"
PS C:\> $SecondaryServer = Get-Item "SQLSERVER:\SQL\SecondaryServer\Instance22"
PS C:\> $PrimaryReplica = New-SqlAvailabilityReplica -Name "PrimaryServer\Instance22" -EndpointUrl "TCP://PrimaryServer.domain:5022" -FailoverMode "Automatic" -AvailabilityMode "SynchronousCommit" -AsTemplate -Version ($PrimaryServer.Version)
PS C:\> $SecondaryReplica = New-SqlAvailabilityReplica -Name "SecondaryServer\Instance22" -EndpointUrl "TCP://SecondaryServer.domain:5022" -FailoverMode "Automatic" -AvailabilityMode "SynchronousCommit" -AsTemplate -Version ($SecondaryServer.Version)
PS C:\> New-SqlAvailabilityGroup -InputObject $PrimaryServer -Name "MainAG" -AvailabilityReplica ($PrimaryReplica, $SecondaryReplica) -Database @("Database01","Database02")

第一個命令會在主伺服器上取得 SQL Server 的實例,然後將它儲存在$PrimaryServer變數中。

第四個命令會使用 New-SqlAvailabilityReplica 建立包含輔助伺服器實例的複本,然後將它儲存在$SecondaryReplica變數中。

命令會使用 $SecondaryServer的 Version 屬性來指定伺服器實例的版本。

範例 2:建立 WSFC 所支援的可用性群組

# Get server
PS C:\> cd 'SQLSERVER:\SQL\some-hostname\Default'
PS SQLSERVER:\SQL\some-hostname\Default> $server = Get-Item $PWD

# Create primary replica
PS SQLSERVER:\SQL\some-hostname\Default> $primaryReplica = New-SqlAvailabilityReplica -Name 'some-hostname' -EndpointUrl 'tcp://some-hostname:5022' -FailoverMode Automatic -AvailabilityMode SynchronousCommit -AsTemplate

# Create AG with explicit cluster type WSFC (same as not passing -ClusterType, since it is the default value)
PS SQLSERVER:\SQL\some-hostname\Default> $server | New-SqlAvailabilityGroup -Name 'ag1' -AvailabilityReplica $PrimaryReplica -Script -ClusterType Wsfc

範例 3:建立獨立可用性群組叢集

# Get server
PS C:\> CD 'SQLSERVER:\SQL\some-hostname\Default'
PS SQLSERVER:\SQL\some-hostname\Default> $server = Get-Item $PWD

# Create primary replica
PS SQLSERVER:\SQL\some-hostname\Default> $primaryReplica = New-SqlAvailabilityReplica -Name 'some-hostname' -EndpointUrl 'tcp://some-hostname:5022' -FailoverMode Automatic -AvailabilityMode SynchronousCommit -AsTemplate

# Create AG cluster group independent
PS SQLSERVER:\SQL\some-hostname\Default> $server | New-SqlAvailabilityGroup -Name 'ag1' -AvailabilityReplica $PrimaryReplica -Script -ClusterType None

範例 4:建立可用性群組,設定SYNCHRONOUS_COMMIT次要複本的數目,這些次要複本必須可供交易在主要復本上認可

# Get server
PS C:\> Get-Item 'SQLSERVER:\SQL\some-hostname\Default'
# Create primary replica
PS C:\> $primaryReplica = New-SqlAvailabilityReplica -Name 'some-hostname' -EndpointUrl 'tcp://some-hostname:5022' -FailoverMode Automatic -AvailabilityMode SynchronousCommit -AsTemplate
# Create AG with RequiredSynchronizedSecondariesToCommit = 3
PS C:\> $server | New-SqlAvailabilityGroup -Name 'ag1' -AvailabilityReplica $PrimaryReplica -RequiredSynchronizedSecondariesToCommit 3

注意:如果目標伺服器版本是 SQL Server 2016 或更低版本時,會使用 -RequiredSynchronizedSecondariesToCommit 參數,就會擲回例外狀況。

參數

-AccessToken

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

例如,這可用來連線到 SQL Azure DBSQL Azure Managed Instance 或 。 Service PrincipalManaged Identity

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

此參數是模組 v22 的新功能。

參數屬性

類型:PSObject
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-AutomatedBackupPreference

指定可用性群組的自動備份喜好設定。

此參數可接受的值為:

  • 主要。 指定備份一律發生在主要復本上。 此選項支援在次要複本上執行備份時無法使用的功能,例如差異備份。
  • SecondaryOnly。 指定一律不會在主要複本上執行備份。 如果主要複本是在線唯一的複本,則不會進行備份。
  • 二 次。 指定備份發生在次要複本上,除非主要複本是在線唯一的複本。 然後,備份會在主要複本上發生。
  • 沒有。 指定決定哪個復本執行備份時,不會考慮主要或次要狀態。 相反地,備份優先順序和在線狀態會決定哪個複本會執行備份。

參數屬性

類型:AvailabilityGroupAutomatedBackupPreference
預設值:None
接受的值:Primary, SecondaryOnly, Secondary, None, Unknown
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-AvailabilityReplica

指定這個 Cmdlet 包含在可用性群組中的可用性複本陣列。 若要取得 AvailabilityReplica,請使用 New-SqlAvailabilityReplica Cmdlet。 指定 AsTemplate 參數。

參數屬性

類型:

AvailabilityReplica[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-BasicAvailabilityGroup

指定建立 advanced (預設值) 或 basic 可用性群組。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ClusterType

備份 AG 的叢集類型。 可能的值為:

  • Wsfc。 AG 將會整合到 Windows Server 故障轉移叢集中。 這是 SQL Server 2016 和以下的 AG 建立方式。 這是預設值。
  • 沒有。 AG 將會與叢集無關。
  • 外部。 AG 將由不是 Windows Server 故障轉移叢集的叢集管理員管理,例如 Linux 上的 Pacemaker。 SQL Server 2017 和更新版本支援此功能。 在 Linux 上以 SQL Server 為目標時,您必須指定此值,否則會出現錯誤。

注意:如果目標伺服器是 SQL Server 2016 和以下版本,則會使用 -ClusterType 參數,就會擲回例外狀況。

參數屬性

類型:AvailabilityGroupClusterType
預設值:Wsfc
接受的值:Wsfc, None, External
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:cf

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ContainedAvailabilityGroup

用來建立自主可用性群組。 此選項是用來建立具有其本身 mastermsdb 資料庫的可用性群組,這些資料庫會在可用性群組中的一組複本之間保持同步。 此參數可與隨附 的 -ReuseSystemDatabases 搭配使用。

只有當目標 SQL Server 支援自主可用性群組 (SQL 2022 和更新版本) 時,才允許此參數。 嘗試使用 是針對不支援自主可用性群組的 SQL 版本,會導致 Cmdlet 擲回錯誤。

此參數僅適用於模組 22+ 版。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Database

指定本機讀取/寫入使用者資料庫的陣列。 這些資料庫必須使用完整恢復模式,且不得使用 AUTO_CLOSE。 這些資料庫不能屬於另一個可用性群組,而且無法針對資料庫鏡像進行設定。 您必須指定此參數的值。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-DatabaseHealthTrigger

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

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-DtcSupportEnabled

指定可用性群組內的資料庫在實例層級或每個資料庫層級向 MSDTC 註冊。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Encrypt

線上到 SQL Server 時要使用的加密類型。

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

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

此參數是模組 v22 的新功能。

參數屬性

類型:String
預設值:None
接受的值:Mandatory, Optional, Strict
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-FailureConditionLevel

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

  • OnServerDown。 如果 SQL Server 服務停止,故障轉移或重新啟動。
  • OnServerUnresponsive。 如果滿足任何較低值的條件,則故障轉移或重新啟動,以及當 SQL Server 服務聯機到叢集且超過 HealthCheckTimeout 臨界值時,或如果目前處於主要角色的可用性複本處於失敗狀態,則為故障轉移或重新啟動。
  • OnCriticalServerError。 如果滿足任何較低值的條件,以及發生內部嚴重伺服器錯誤時,故障轉移或重新啟動,包括記憶體不足狀況、嚴重的寫入存取違規或太多傾印。
  • OnModerateServerError。 如果滿足任何較低值的條件,則故障轉移或重新啟動,如果發生中度伺服器錯誤,包括持續性記憶體不足狀況。
  • OnAnyQualifiedFailureConditions。 如果滿足任何較低值的條件,則故障轉移或重新啟動,如果發生合格的失敗狀況,包括引擎背景工作線程耗盡和偵測到無法解決的死結。

參數屬性

類型:AvailabilityGroupFailureConditionLevel
預設值:None
接受的值:OnServerDown, OnServerUnresponsive, OnCriticalServerErrors, OnModerateServerErrors, OnAnyQualifiedFailureCondition, Unknown
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-HealthCheckTimeout

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

參數屬性

類型:Int32
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-HostNameInCertificate

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

此參數是模組 v22 的新功能。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-InputObject

指定裝載此 Cmdlet 所建立之可用性群組主要復本的 SQL Server 實例。

參數屬性

類型:Server
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ByObject
Position:2
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Name

指定這個 Cmdlet 所建立的可用性群組名稱。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:1
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Path

指定裝載此 Cmdlet 所建立之可用性群組之初始主要複本之 SQL Server 實例的路徑。 如果您未指定此參數,此 Cmdlet 會使用目前的工作位置。 如果您指定值,則路徑目前必須存在。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ByPath
Position:2
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-RequiredSynchronizedSecondariesToCommit

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

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

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

參數屬性

類型:Int32
預設值:0
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ReuseSystemDatabases

此參數會讓舊版 AG 的自主 mastermsdb 資料庫用於建立這個新的可用性群組。

不允許嘗試使用此參數而不指定 -ContainedAvailabilityGroup 會導致 Cmdlet 擲回錯誤。

此參數僅適用於模組 22+ 版。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Script

指出此 Cmdlet 會傳回執行此 Cmdlet 所執行工作的 Transact-SQL 腳本。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-TrustServerCertificate

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

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

此參數是模組 v22 的新功能。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-WhatIf

顯示 Cmdlet 執行時會發生什麼事。 指令未執行。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:無線

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters

輸入

Microsoft.SqlServer.Management.Smo.Server

您可以將伺服器實例傳遞至此 Cmdlet。

輸出

Microsoft.SqlServer.Management.Smo.AvailabilityGroup

此 Cmdlet 會傳回可用性群組。