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.
Это значение сопоставляется со свойством Encrypt
SqlConnectionEncryptOption
объекта 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
Этот командлет возвращает группу доступности.