New-SqlAvailabilityGroup

Cria um grupo de disponibilidade.

Sintaxe

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>]

Description

O cmdlet New-SqlAvailabilityGroup cria um grupo de disponibilidade em Grupos de Disponibilidade AlwaysOn.

O parâmetro InputObject ou Path especifica o servidor que hospeda a réplica primária inicial.

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

Exemplos

Exemplo 1: criar um grupo de disponibilidade

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")

O primeiro comando obtém uma instância do SQL Server no servidor primário e, em seguida, armazena-a na variável $PrimaryServer.

O quarto comando cria uma réplica que inclui a instância do servidor secundário usando New-SqlAvailabilityReplica e, em seguida, a armazena na variável $SecondaryReplica.

O comando especifica a versão da instância do servidor usando a propriedade Version do $SecondaryServer.

Exemplo 2: criar um grupo de disponibilidade apoiado pelo 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

Exemplo 3: criar um cluster de grupos de disponibilidade independente

# 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

Exemplo 4: Criar um grupo de disponibilidade definindo o número de secundários SYNCHRONOUS_COMMIT que devem estar disponíveis para que as transações sejam confirmadas no primário

# 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

Observação: uma exceção será gerada se o parâmetro -RequiredSynchronizedSecondariesToCommit for usado quando a versão do servidor de destino for SQL Server 2016 ou inferior.

Parâmetros

-AccessToken

O token de acesso usado para autenticar no SQL Server, como uma alternativa ao usuário/senha ou à Autenticação do Windows.

Isso pode ser usado, por exemplo, para se conectar a SQL Azure DB e SQL Azure Managed Instance usando um Service Principal ou um Managed Identity.

O parâmetro a ser usado pode ser uma cadeia de caracteres que representa o token ou um objeto PSAccessToken conforme retornado executando Get-AzAccessToken -ResourceUrl https://database.windows.net.

Esse parâmetro é novo na v22 do módulo.

Tipo:PSObject
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-AutomatedBackupPreference

Especifica a preferência de backup automatizado para o grupo de disponibilidade.

Os valores aceitáveis para este parâmetro são:

  • Primário. Especifica que os backups sempre ocorrem na réplica primária. Essa opção dá suporte ao uso de recursos não disponíveis quando o backup é executado em uma réplica secundária, como backups diferenciais.
  • SecondaryOnly. Especifica que os backups nunca são executados em réplicas primárias. Se a réplica primária for a única réplica online, o backup não ocorrerá.
  • Secundário. Especifica que os backups ocorrem em réplicas secundárias, a menos que a réplica primária seja a única réplica online. Em seguida, o backup ocorre na réplica primária.
  • Nenhum. Especifica que o status primário ou secundário não é levado em conta ao decidir qual réplica executa backups. Em vez disso, a prioridade de backup e o status online determinam qual réplica executa backups.
Tipo:AvailabilityGroupAutomatedBackupPreference
Valores aceitos:Primary, SecondaryOnly, Secondary, None, Unknown
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-AvailabilityReplica

Especifica uma matriz de réplicas de disponibilidade que esse cmdlet inclui no grupo de disponibilidade. Para obter umAvailabilityReplica, use o cmdlet New-SqlAvailabilityReplica. Especifique o parâmetro asTemplate .

Tipo:AvailabilityReplica[]
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-BasicAvailabilityGroup

Especifica se um advanced (padrão) ou um grupo de disponibilidade basic.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ClusterType

O tipo de cluster que faz backup do AG. Os valores possíveis são:

  • Wsfc. O AG será integrado ao Cluster de Failover do Windows Server. É assim que os AGs no SQL Server 2016 e abaixo são criados. Esse é o padrão.
  • Nenhum. O AG será independente de cluster.
  • Externo. O AG será gerenciado por um gerenciador de cluster que não é um Cluster de Failover do Windows Server, como o Pacemaker no Linux. Isso tem suporte no SQL Server 2017 e superior. Ao direcionar o SQL Server no Linux, você deve especificar esse valor ou um erro será exibido.

Observação: uma exceção será gerada se o parâmetro -ClusterType for usado quando o servidor de destino for SQL Server 2016 e inferior.

Tipo:AvailabilityGroupClusterType
Valores aceitos:Wsfc, None, External
Cargo:Named
Valor padrão:Wsfc
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Confirm

Solicita a confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ContainedAvailabilityGroup

Usado para criar um grupo de disponibilidade independente. Essa opção é usada para criar um grupo de disponibilidade com seus próprios bancos de dados master e msdb, que são mantidos em sincronia entre o conjunto de réplicas no grupo de disponibilidade. Esse parâmetro pode ser usado com seu complementar -ReuseSystemDatabases.

Esse parâmetro só é permitido quando o SQL Server de destino dá suporte a Grupos de Disponibilidade Independentes (SQL 2022 e superior). Tentar usar é em versões do SQL que não dão suporte a Grupos de Disponibilidade Independentes faria com que o cmdlet gerasse um erro.

Esse parâmetro só está disponível na versão 22+ do módulo.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Database

Especifica uma matriz de bancos de dados de usuário locais de leitura/gravação. Esses bancos de dados devem usar o modelo de recuperação completa e não devem usar AUTO_CLOSE. Esses bancos de dados não podem pertencer a outro grupo de disponibilidade e não podem ser configurados para espelhamento de banco de dados. Você deve especificar um valor para esse parâmetro.

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-DatabaseHealthTrigger

Especifica se um failover automático do grupo de disponibilidade deve ser disparado se qualquer réplica de banco de dados de usuário em um grupo de disponibilidade encontrar uma condição de falha de banco de dados.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-DtcSupportEnabled

Especifica se os bancos de dados em um grupo de disponibilidade se registram com o MSDTC no nível da instância (padrão) ou no nível por banco de dados.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Encrypt

O tipo de criptografia a ser usado ao se conectar ao SQL Server.

Esse valor é mapeado para a propriedade EncryptSqlConnectionEncryptOption no objeto SqlConnection do driver Microsoft.Data.SqlClient.

Na v22 do módulo, o padrão é Optional (para compatibilidade com v21). Na v23+ do módulo, o valor padrão será 'Obrigatório', o que pode criar uma alteração significativa para scripts existentes.

Esse parâmetro é novo na v22 do módulo.

Tipo:String
Valores aceitos:Mandatory, Optional, Strict
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-FailureConditionLevel

Especifica o comportamento de failover automático do grupo de disponibilidade. Os valores aceitáveis para este parâmetro são:

  • OnServerDown. Failover ou reinicialização se o serviço do SQL Server for interrompido.
  • OnServerUnresponsive. Failover ou reinicialização se qualquer condição de valor inferior for atendida, mais quando o serviço SQL Server estiver conectado ao cluster e o HealthCheckTimeout limite for excedido ou se a réplica de disponibilidade atualmente na função primária estiver em um estado de falha.
  • OnCriticalServerError. Failover ou reinicialização se qualquer condição de valor inferior for atendida, além de quando ocorrer um erro interno crítico do Servidor, que incluem condição de memória insuficiente, violação grave de acesso de gravação ou muito despejo.
  • OnModerateServerError. Failover ou reinicialização se qualquer condição de valor inferior for atendida, além disso, se ocorrer um erro moderado do servidor, que inclui condição persistente fora da memória.
  • OnAnyQualifiedFailureConditions. Failover ou reinicialização se qualquer condição de valor inferior for atendida, além disso, se ocorrer uma condição de falha qualificada, que inclui esgotamento de thread de trabalho do mecanismo e deadlock insolúvel detectado.
Tipo:AvailabilityGroupFailureConditionLevel
Valores aceitos:OnServerDown, OnServerUnresponsive, OnCriticalServerErrors, OnModerateServerErrors, OnAnyQualifiedFailureCondition, Unknown
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-HealthCheckTimeout

Especifica o período de tempo, em milissegundos, após o qual os grupos de disponibilidade Always On declaram um servidor sem resposta como não íntegro.

Tipo:Int32
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-HostNameInCertificate

O nome do host a ser usado na validação do certificado TLS/SSL do SQL Server. Você deve passar esse parâmetro se a instância do SQL Server estiver habilitada para o Force Encryption e quiser se conectar a uma instância usando nome de host/nome curto. Se esse parâmetro for omitido, passar o FQDN (Nome de Domínio Totalmente Qualificado) para -ServerInstance será necessário para se conectar a uma instância do SQL Server habilitada para o Force Encryption.

Esse parâmetro é novo na v22 do módulo.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-InputObject

Especifica a instância do SQL Server que hospeda a réplica primária do grupo de disponibilidade que esse cmdlet cria.

Tipo:Server
Cargo:2
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Name

Especifica o nome do grupo de disponibilidade que esse cmdlet cria.

Tipo:String
Cargo:1
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Path

Especifica o caminho da instância do SQL Server que hospeda a réplica primária inicial do grupo de disponibilidade que esse cmdlet cria. Se você não especificar esse parâmetro, esse cmdlet usará o local de trabalho atual. Se você especificar um valor, o caminho deverá existir no momento.

Tipo:String
Cargo:2
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ProgressAction

Determina como o PowerShell responde às atualizações de progresso geradas por um script, cmdlet ou provedor, como as barras de progresso geradas pelo cmdlet Write-Progress. O cmdlet Write-Progress cria barras de progresso que mostram o status de um comando.

Tipo:ActionPreference
Aliases:proga
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-RequiredSynchronizedSecondariesToCommit

O número de secundários de confirmação síncrona que devem estar disponíveis para serem confirmados no primário.

Se um SYNCHRONOUS_COMMIT secundário for desconectado do primário por algum tempo, o primário o rebaixará para ASYNCHRONOUS_COMMIT para evitar o bloqueio de confirmações. Se o primário ficar indisponível e o usuário desejar fazer failover para um desses secundários, ele poderá incorrer em perda de dados. Ao definir RequiredSynchronizedSecondariesToCommit para algum número, o usuário pode evitar a perda de dados, pois o primário começará a bloquear confirmações se muitos secundários forem rebaixados para ASYNCHRONOUS_COMMIT.

O valor padrão dessa configuração é 0, o que significa que o primário nunca bloqueará confirmações. Isso é idêntico ao comportamento anterior ao SQL Server 2017.

Tipo:Int32
Cargo:Named
Valor padrão:0
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ReuseSystemDatabases

Esse parâmetro faz com que os bancos de dados master e msdb contidos de uma versão anterior do AG sejam usados na criação desse novo grupo de disponibilidade.

Tentar usar esse parâmetro sem especificar -ContainedAvailabilityGroup não é permitido faria com que o cmdlet gerasse um erro.

Esse parâmetro só está disponível na versão 22+ do módulo.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Script

Indica que esse cmdlet retorna um script Transact-SQL que executa a tarefa executada por esse cmdlet.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-TrustServerCertificate

Indica se o canal será criptografado ao ignorar a cadeia de certificados para validar a confiança.

Na v22 do módulo, o padrão é $true (para compatibilidade com v21). Na v23+ do módulo, o valor padrão será "$false", o que pode criar uma alteração significativa para scripts existentes.

Esse parâmetro é novo na v22 do módulo.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

Microsoft.SqlServer.Management.Smo.Server

Você pode passar uma instância de servidor para este cmdlet.

Saídas

Microsoft.SqlServer.Management.Smo.AvailabilityGroup

Esse cmdlet retorna um grupo de disponibilidade.