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.

Четвертая команда создает реплика, включающую экземпляр сервера-получателя, с помощью New-SqlAvailabilityReplica, а затем сохраняет его в переменной $SecondaryReplica.

Команда задает версию экземпляра сервера с помощью свойства Version $SecondaryServer.

Пример 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

Примечание. Исключение возникает, если параметр -RequiredSynchronizedSecondariesToCommit используется, если версия целевого сервера SQL Server 2016 или ниже.

Параметры

-AccessToken

Маркер доступа, используемый для проверки подлинности для SQL Server, в качестве альтернативы проверке подлинности пользователя или пароля или проверки подлинности Windows.

Его можно использовать, например, для подключения к SQL Azure DB и SQL Azure Managed Instance с помощью Service Principal или Managed Identity.

Используемый параметр может быть либо строкой, представляющей маркер, либо объектом, PSAccessToken возвращаемым при выполнении команды Get-AzAccessToken -ResourceUrl https://database.windows.net.

Этот параметр является новым в версии 22 модуля.

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

Указывает, следует ли создать группу advanced доступности (по умолчанию) или группу basic доступности.

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

-ClusterType

Тип кластера, который поддерживает группу доступности. Возможны следующие значения:

  • Wsfc. Группа доступности будет интегрирована в отказоустойчивый кластер Windows Server. Вот как создаются группы доступности в SQL Server 2016 и ниже. Это значение по умолчанию.
  • Нет. Группа доступности будет независимой от кластера.
  • Внешних. Группа доступности будет управляться диспетчером кластеров, который не является отказоустойчивим кластером Windows Server, например Pacemaker в Linux. Это поддерживается в SQL Server 2017 и более поздних версиях. При нацеливание на SQL Server на Linux необходимо указать это значение, иначе произойдет ошибка.

Примечание. Если параметр -ClusterType используется, если целевой сервер SQL Server 2016 и ниже, будет создано исключение.

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.

Это значение сопоставляется со свойством EncryptSqlConnectionEncryptOption объекта SqlConnection драйвера Microsoft.Data.SqlClient.

В модуле версии 22 значение по умолчанию — Optional (для совместимости с версией 21). В версии 23 и более поздних версий модуля значением по умолчанию будет "Обязательно", что может привести к критическому изменению для существующих скриптов.

Этот параметр является новым в версии 22 модуля.

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

Имя узла используется для проверки TLS/SSL-сертификата SQL Server. Этот параметр необходимо передать, если экземпляр SQL Server включен для принудительного шифрования и вы хотите подключиться к экземпляру с помощью имени узла или shortname. Если этот параметр опущен, необходимо передать полное доменное имя (FQDN) в -ServerInstance для подключения к экземпляру SQL Server, включенного для принудительного шифрования.

Этот параметр является новым в версии 22 модуля.

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, что означает, что основной объект никогда не будет блокировать фиксации. Это идентично поведению до SQL Server 2017 года.

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

-ReuseSystemDatabases

Этот параметр приводит к использованию автономной 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

Указывает, будет ли канал зашифрован при обходе цепочки сертификатов для проверки доверия.

В версии 22 модуля по умолчанию используется $true значение (для совместимости с версией 21). В версии 23+ модуля значение по умолчанию будет "$false", что может привести к критическому изменению для существующих скриптов.

Этот параметр является новым в версии 22 модуля.

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

Этот командлет возвращает группу доступности.