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>]
   [-ProgressAction <ActionPreference>]
   [-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>]
   [-ProgressAction <ActionPreference>]
   [-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

注: ターゲット サーバーのバージョンが SQL Server 2016 以前の場合、-RequiredSynchronizedSecondariesToCommit パラメーターを使用すると、例外がスローされます。

パラメーター

-AccessToken

ユーザー/パスワードまたは Windows 認証の代わりに、SQL Server に対する認証に使用されるアクセス トークン。

これは、たとえば、Service Principal または Managed Identityを使用して SQL Azure DBSQL Azure Managed Instance に接続するために使用できます。

使用するパラメーターには、トークンを表す文字列、または Get-AzAccessToken -ResourceUrl https://database.windows.netを実行して返される PSAccessToken オブジェクトを指定できます。

このパラメーターは、モジュールの v22 の新機能です。

型:PSObject
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-AutomatedBackupPreference

可用性グループの自動バックアップ設定を指定します。

このパラメーターに使用できる値は次のとおりです。

  • 原発。 バックアップが常にプライマリ レプリカで実行されることを指定します。 このオプションでは、差分バックアップなど、セカンダリ レプリカでバックアップを実行するときに使用できない機能の使用がサポートされます。
  • SecondaryOnly。 プライマリ レプリカでバックアップが実行されないように指定します。 プライマリ レプリカがオンラインの唯一のレプリカである場合、バックアップは行われません。
  • 付帯。 プライマリ レプリカが唯一のレプリカオンラインでない限り、セカンダリ レプリカでバックアップを実行することを指定します。 その後、プライマリ レプリカでバックアップが実行されます。
  • 何一つ。 バックアップを実行するレプリカを決定するときに、プライマリまたはセカンダリの状態が考慮されないことを指定します。 代わりに、バックアップの優先度とオンライン状態によって、バックアップを実行するレプリカが決まります。
型:AvailabilityGroupAutomatedBackupPreference
指定可能な値:Primary, SecondaryOnly, Secondary, None, Unknown
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-AvailabilityReplica

このコマンドレットが可用性グループに含める可用性レプリカの配列を指定します。 AvailabilityReplicaを取得するには、New-SqlAvailabilityReplica コマンドレットを使用します。 AsTemplate パラメーターを指定します。

型:AvailabilityReplica[]
配置:Named
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-BasicAvailabilityGroup

advanced (既定) と basic 可用性グループのどちらを作成するかを指定します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ClusterType

AG をバックアップするクラスターの種類。 使用可能な値は次のとおりです。

  • Wsfc。 AG は Windows Server フェールオーバー クラスターに統合されます。 これにより、SQL Server 2016 以降の AG が作成されます。 これが既定値です。
  • 何一つ。 AG はクラスターに依存しません。
  • 外。 AG は、Linux 上の Pacemaker などの Windows Server フェールオーバー クラスターではないクラスター マネージャーによって管理されます。 これは、SQL Server 2017 以降でサポートされています。 SQL Server on Linux を対象とする場合は、この値を指定する必要があります。または、エラーが発生します。

注: ターゲット サーバーが SQL Server 2016 以下の場合、-ClusterType パラメーターを使用すると、例外がスローされます。

型:AvailabilityGroupClusterType
指定可能な値:Wsfc, None, External
配置:Named
規定値:Wsfc
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Confirm

コマンドレットを実行する前に確認を求めるメッセージが表示されます。

型:SwitchParameter
Aliases:cf
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ContainedAvailabilityGroup

包含可用性グループを作成するために使用されます。 このオプションは、可用性グループ内の一連のレプリカ間で同期された、独自の master および msdb データベースを持つ可用性グループを作成するために使用されます。 このパラメーターは、-ReuseSystemDatabasesのコンパニオン と共に使用できます。

このパラメーターは、ターゲット SQL Server が包含可用性グループ (SQL 2022 以降) をサポートしている場合にのみ使用できます。 使用しようとしているのは、包含可用性グループをサポートしていない SQL のバージョンに対して行うと、コマンドレットでエラーがスローされます。

このパラメーターは、モジュールのバージョン 22 以降でのみ使用できます。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Database

ローカルの読み取り/書き込みユーザー データベースの配列を指定します。 これらのデータベースは完全復旧モデルを使用する必要があり、AUTO_CLOSEを使用してはなりません。 これらのデータベースは別の可用性グループに属できず、データベース ミラーリング用に構成することはできません。 このパラメーターには値を指定する必要があります。

型:String[]
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-DatabaseHealthTrigger

可用性グループ内のユーザー データベース レプリカでデータベースエラー状態が発生した場合に、可用性グループの自動フェールオーバーをトリガーするかどうかを指定します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-DtcSupportEnabled

可用性グループ内のデータベースを、インスタンス レベル (既定) またはデータベースごとのレベルで MSDTC に登録するかどうかを指定します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Encrypt

SQL Server に接続するときに使用する暗号化の種類。

この値は、Microsoft.Data.SqlClient ドライバーの SqlConnection オブジェクトの Encrypt プロパティ SqlConnectionEncryptOption にマップされます。

モジュールの v22 では、既定値は Optional です (v21 との互換性のため)。 モジュールの v23 以降では、既定値は "必須" になり、既存のスクリプトに重大な変更が生じる可能性があります。

このパラメーターは、モジュールの v22 の新機能です。

型:String
指定可能な値:Mandatory, Optional, Strict
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-FailureConditionLevel

可用性グループの自動フェールオーバー動作を指定します。 このパラメーターに使用できる値は次のとおりです。

  • OnServerDown。 SQL Server サービスが停止した場合は、フェールオーバーまたは再起動します。
  • OnServerUnresponsive。 低い値の条件が満たされている場合、および SQL Server サービスがクラスターに接続されていて、HealthCheckTimeout しきい値を超えた場合、または現在プライマリ ロールの可用性レプリカが失敗状態にある場合は、フェールオーバーまたは再起動します。
  • OnCriticalServerError。 低い値の条件が満たされている場合、さらに、メモリ不足、重大な書き込みアクセス違反、またはダンプが多すぎる内部重大なサーバー エラーが発生した場合は、フェールオーバーまたは再起動します。
  • OnModerateServerError。 低い値の条件が満たされている場合、および中程度のサーバー エラーが発生した場合はフェールオーバーまたは再起動します。これには、永続的なメモリ不足状態が含まれます。
  • OnAnyQualifiedFailureConditions。 低い値の条件が満たされている場合はフェールオーバーまたは再起動します。さらに、エンジン ワーカー スレッドの枯渇や解決できないデッドロックの検出など、条件を満たすエラー状態が発生した場合は、フェールオーバーまたは再起動します。
型:AvailabilityGroupFailureConditionLevel
指定可能な値:OnServerDown, OnServerUnresponsive, OnCriticalServerErrors, OnModerateServerErrors, OnAnyQualifiedFailureCondition, Unknown
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-HealthCheckTimeout

Always On 可用性グループが応答しないサーバーを異常と宣言するまでの時間をミリ秒単位で指定します。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-HostNameInCertificate

SQL Server TLS/SSL 証明書の検証に使用するホスト名。 SQL Server インスタンスで Force Encryption が有効になっていて、ホスト名/短縮名を使用してインスタンスに接続する場合は、このパラメーターを渡す必要があります。 このパラメーターを省略した場合、強制暗号化が有効になっている SQL Server インスタンスに接続するには、完全修飾ドメイン名 (FQDN) を -ServerInstance に渡す必要があります。

このパラメーターは、モジュールの v22 の新機能です。

型:String
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-InputObject

このコマンドレットによって作成される可用性グループのプライマリ レプリカをホストする SQL Server のインスタンスを指定します。

型:Server
配置:2
規定値:None
必須:True
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-Name

このコマンドレットによって作成される可用性グループの名前を指定します。

型:String
配置:1
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Path

このコマンドレットによって作成される可用性グループの初期プライマリ レプリカをホストする SQL Server のインスタンスのパスを指定します。 このパラメーターを指定しない場合、このコマンドレットは現在の作業場所を使用します。 値を指定する場合、パスは現在存在している必要があります。

型:String
配置:2
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ProgressAction

スクリプト、コマンドレット、またはプロバイダーによって生成された進行状況の更新 (Write-Progress コマンドレットによって生成された進行状況バーなど) に対する PowerShell の応答方法を決定します。 Write-Progress コマンドレットは、コマンドの状態を示す進行状況バーを作成します。

型:ActionPreference
Aliases:proga
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-RequiredSynchronizedSecondariesToCommit

プライマリでコミットできるようにするために使用できる必要がある同期コミット セカンダリの数。

SYNCHRONOUS_COMMIT セカンダリがしばらくプライマリから切断されている場合、プライマリはコミットをブロックしないように ASYNCHRONOUS_COMMIT するように降格します。 プライマリが使用できなくなり、ユーザーがこれらのセカンダリのいずれかにフェールオーバーする場合、データ損失が発生する可能性があります。 RequiredSynchronizedSecondariesToCommit 何らかの数に設定すると、に降格されるセカンダリが多すぎると、プライマリがコミットのブロックを開始するため、ユーザーはデータ損失を防ぐことができます。

この設定の既定値は 0 です。つまり、プライマリはコミットをブロックしません。 これは、SQL Server 2017 より前の動作と同じです。

型:Int32
配置:Named
規定値:0
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ReuseSystemDatabases

このパラメーターにより、以前のバージョンの AG の包含 master データベースと msdb データベースが、この新しい可用性グループの作成で使用されます。

-ContainedAvailabilityGroup を指定せずにこのパラメーター 使用しようとすると、コマンドレットでエラーがスローされます。

このパラメーターは、モジュールのバージョン 22 以降でのみ使用できます。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Script

このコマンドレットは、このコマンドレットが実行するタスクを実行する Transact-SQL スクリプトを返します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-TrustServerCertificate

信頼を検証するために証明書チェーンのウォークをバイパスしながらチャネルを暗号化するかどうかを示します。

モジュールの v22 では、既定値は $true です (v21 との互換性のため)。 モジュールの v23 以降では、既定値は "$false" になり、既存のスクリプトに重大な変更が生じる可能性があります。

このパラメーターは、モジュールの v22 の新機能です。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-WhatIf

コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。

型:SwitchParameter
Aliases:wi
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

Microsoft.SqlServer.Management.Smo.Server

サーバー インスタンスをこのコマンドレットに渡すことができます。

出力

Microsoft.SqlServer.Management.Smo.AvailabilityGroup

このコマンドレットは、可用性グループを返します。