New-SqlAvailabilityGroup
可用性グループを作成します。
構文
New-SqlAvailabilityGroup
-AvailabilityReplica <AvailabilityReplica[]>
[-Database <String[]>]
[-AutomatedBackupPreference <AvailabilityGroupAutomatedBackupPreference>]
[-FailureConditionLevel <AvailabilityGroupFailureConditionLevel>]
[-HealthCheckTimeout <Int32>]
[-BasicAvailabilityGroup]
[-ContainedAvailabilityGroup]
[-ReuseSystemDatabases]
[-DatabaseHealthTrigger]
[-DtcSupportEnabled]
[-ClusterType <AvailabilityGroupClusterType>]
[-RequiredSynchronizedSecondariesToCommit <Int32>]
[-Name] <String>
[[-Path] <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
New-SqlAvailabilityGroup
-AvailabilityReplica <AvailabilityReplica[]>
[-Database <String[]>]
[-AutomatedBackupPreference <AvailabilityGroupAutomatedBackupPreference>]
[-FailureConditionLevel <AvailabilityGroupFailureConditionLevel>]
[-HealthCheckTimeout <Int32>]
[-BasicAvailabilityGroup]
[-ContainedAvailabilityGroup]
[-ReuseSystemDatabases]
[-DatabaseHealthTrigger]
[-DtcSupportEnabled]
[-ClusterType <AvailabilityGroupClusterType>]
[-RequiredSynchronizedSecondariesToCommit <Int32>]
[-Name] <String>
[-InputObject] <Server>
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
New-SqlAvailabilityGroup コマンドレットは、可用性グループに可用性グループAlways On作成します。
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 変数に格納します。
4 番目のコマンドは、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
注: ターゲット サーバーのバージョンが 2016 以前SQL Server場合に -RequiredSynchronizedSecondariesToCommit パラメーターを使用すると、例外がスローされます。
パラメーター
-AccessToken
ユーザー/パスワードまたは Windows 認証の代わりに、SQL Serverの認証に使用されるアクセス トークン。
これは、たとえば、 または Managed Identity
に接続SQL Azure DB
して SQL Azure Managed Instance
使用するために使用Service Principal
できます。
使用するパラメーターには、 を実行Get-AzAccessToken -ResourceUrl https://database.windows.net
して返されるトークンまたはオブジェクトをPSAccessToken
表す文字列を指定できます。
このパラメーターは、モジュールの 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 |
-AvailabilityReplica
このコマンドレットが可用性グループに含める可用性レプリカの配列を指定します。 AvailabilityReplica を取得するには、New-SqlAvailabilityReplica コマンドレットを使用します。 AsTemplate パラメーターを指定します。
Type: | AvailabilityReplica[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-BasicAvailabilityGroup
(既定) またはbasic
可用性グループをadvanced
作成するかどうかを指定します。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ClusterType
AG をバックアップするクラスターの種類。 次のいずれかの値になります。
- Wsfc。 AG は Windows Server フェールオーバー クラスターに統合されます。 これは、SQL Server 2016 以降の AG の作成方法です。 既定値です。
- [なし] : AG はクラスターに依存しません。
- 外部。 AG は、Linux 上の Pacemaker など、Windows Server フェールオーバー クラスターではないクラスター マネージャーによって管理されます。 これは、SQL Server 2017 以降でサポートされています。 SQL Server on Linuxを対象とする場合は、この値を指定する必要があります。または、エラーが発生します。
注: ターゲット サーバーが 2016 以降SQL Server場合に -ClusterType パラメーターを使用すると、例外がスローされます。
Type: | AvailabilityGroupClusterType |
Accepted values: | Wsfc, None, External |
Position: | Named |
Default value: | Wsfc |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ContainedAvailabilityGroup
包含可用性グループを作成するために使用されます。 このオプションは、独自のmaster
および msdb
データベースを持つ可用性グループを作成するために使用され、可用性グループ内のレプリカのセット間で同期が維持されます。 このパラメーターは、コンパニオン -ReuseSystemDatabases と共に使用できます。
このパラメーターは、ターゲット SQL Serverが包含可用性グループ (SQL 2022 以降) をサポートしている場合にのみ許可されます。 を使用しようとすると、包含可用性グループをサポートしていない SQL のバージョンに対して、コマンドレットがエラーをスローします。
このパラメーターは、モジュールのバージョン 22 以降でのみ使用できます。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Database
ローカルの読み取り/書き込みユーザー データベースの配列を指定します。 これらのデータベースは完全復旧モデルを使用する必要があり、AUTO_CLOSEを使用することはできません。 これらのデータベースは他の可用性グループに属すことができず、データベース ミラーリング用に構成できません。 このパラメーターの値を指定する必要があります。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DatabaseHealthTrigger
可用性グループ内のユーザー データベース レプリカでデータベースエラー状態が発生した場合に、可用性グループの自動フェールオーバーをトリガーするかどうかを指定します。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DtcSupportEnabled
可用性グループ内のデータベースを、インスタンス レベル (既定) またはデータベースごとのレベルで MSDTC に登録するかどうかを指定します。
Type: | SwitchParameter |
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 インスタンスが Force Encryption に対して有効になっており、hostname/shortname を使用してインスタンスに接続する場合は、このパラメーターを渡す必要があります。 このパラメーターを省略した場合、強制暗号化が有効になっているSQL Server インスタンスに接続するには、完全修飾ドメイン名 (FQDN) を -ServerInstance に渡す必要があります。
このパラメーターは、モジュールの v22 の新機能です。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
このコマンドレットによって作成される可用性グループのプライマリ レプリカをホストするSQL Serverのインスタンスを指定します。
Type: | Server |
Position: | 2 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
このコマンドレットによって作成される可用性グループの名前を指定します。
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
このコマンドレットによって作成される可用性グループの初期プライマリ レプリカをホストするSQL Serverのインスタンスのパスを指定します。 このパラメーターを指定しない場合、このコマンドレットは現在の作業場所を使用します。 値を指定する場合、パスは現在存在している必要があります。
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RequiredSynchronizedSecondariesToCommit
プライマリでコミットできるようにするために使用できる必要がある同期コミット セカンダリの数。
セカンダリが SYNCHRONOUS_COMMIT
しばらくプライマリから切断されている場合、プライマリはコミットをブロックしないように降格 ASYNCHRONOUS_COMMIT
します。 プライマリが使用できなくなり、ユーザーがこれらのセカンダリのいずれかにフェールオーバーする場合、データが失われる可能性があります。 RequiredSynchronizedSecondariesToCommit を何らかの数に設定すると、多すぎるセカンダリが に降格された場合にプライマリがコミットのブロックを開始するため、ユーザーはデータ損失をASYNCHRONOUS_COMMIT
防ぐことができます。
この設定の既定値は 0 です。つまり、プライマリはコミットをブロックしません。 これは、2017 年SQL Server前の動作と同じです。
Type: | Int32 |
Position: | Named |
Default value: | 0 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ReuseSystemDatabases
このパラメーターを指定すると、この新しい可用性グループの作成で、以前のバージョンの AG の包含 master
データベースと msdb
データベースが使用されます。
-ContainedAvailabilityGroup を指定せずにこのパラメーターを使用しようとすると、コマンドレットでエラーがスローされます。
このパラメーターは、モジュールのバージョン 22 以降でのみ使用できます。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Script
このコマンドレットによって、このコマンドレットが実行するタスクを実行する Transact-SQL スクリプトが返されることを示します。
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
コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
Microsoft.SqlServer.Management.Smo.Server
サーバー インスタンスをこのコマンドレットに渡すことができます。
出力
Microsoft.SqlServer.Management.Smo.AvailabilityGroup
このコマンドレットは可用性グループを返します。