New-SqlAvailabilityGroup
Cria um grupo de disponibilidade.
Syntax
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>]
Description
O cmdlet New-SqlAvailabilityGroup cria um grupo de disponibilidade em grupos de disponibilidade Always On.
O parâmetro InputObject ou Path especifica o servidor que hospeda o réplica primário 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 de 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, armazena-a 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 em SQL Server, como uma alternativa ao usuário/senha ou à Autenticação do Windows.
Isso pode ser usado, por exemplo, para se conectar e SQL Azure DB
SQL Azure Managed Instance
usar 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 PSAccessToken
objeto conforme retornado executando Get-AzAccessToken -ResourceUrl https://database.windows.net
.
Esse parâmetro é novo na v22 do módulo.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AutomatedBackupPreference
Especifica a preferência de backup automatizado para o grupo de disponibilidade.
Os valores aceitáveis para esse parâmetro são:
- Primária. Especifica que os backups sempre ocorrem no réplica primário. Essa opção dá suporte ao uso de recursos não disponíveis quando o backup é executado em um réplica secundário, como backups diferenciais.
- SecondaryOnly. Especifica que os backups nunca são executados em réplicas primárias. Se o réplica primário for o único réplica online, o backup não ocorrerá.
- Secundário. Especifica que os backups ocorrem em réplicas secundárias, a menos que o réplica primário seja o único 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 as status online determinam qual réplica executa backups.
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
Especifica uma matriz de réplicas de disponibilidade que esse cmdlet inclui no grupo de disponibilidade. Para obter um AvailabilityReplica, use o cmdlet New-SqlAvailabilityReplica . Especifique o parâmetro AsTemplate .
Type: | AvailabilityReplica[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-BasicAvailabilityGroup
Especifica se um advanced
(padrão) ou um basic
grupo de disponibilidade deve ser criado.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ClusterType
O tipo de cluster que dá suporte ao 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 seja um Cluster de Failover do Windows Server, como o Pacemaker no Linux. Isso tem suporte no SQL Server 2017 e superior. Ao direcionar SQL Server em 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 abaixo.
Type: | AvailabilityGroupClusterType |
Accepted values: | Wsfc, None, External |
Position: | Named |
Default value: | Wsfc |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Solicita sua confirmação antes de executar o cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ContainedAvailabilityGroup
Usado para criar um grupo de disponibilidade independente. Essa opção é usada para criar um grupo de disponibilidade com os próprios banco de dados master
e msdb
que são mantidos sincronizados com o conjunto de réplicas no grupo de disponibilidade. Esse parâmetro pode ser usado com seus -ReuseSystemDatabases complementares.
Esse parâmetro é permitido somente quando o SQL Server de destino dá suporte a Grupos de Disponibilidade Independentes (SQL 2022 e superior). Tentar usar é em relação a 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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. Estes 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.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DatabaseHealthTrigger
Especifica se um failover automático do grupo de disponibilidade deve ser disparado se algum banco de dados de usuário réplica em um grupo de disponibilidade encontrar uma condição de falha de banco de dados.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DtcSupportEnabled
Especifica se os bancos de dados em um grupo de disponibilidade se registram no MSDTC no nível da instância (padrão) ou no nível por banco de dados.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encrypt
O tipo de criptografia a ser usado ao se conectar a SQL Server.
Esse valor é mapeado para a Encrypt
propriedade SqlConnectionEncryptOption
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 interruptiva para scripts existentes.
Esse parâmetro é novo na v22 do módulo.
Type: | String |
Accepted values: | Mandatory, Optional, Strict |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FailureConditionLevel
Especifica o comportamento de failover automático do grupo de disponibilidade. Os valores aceitáveis para esse parâmetro são:
- OnServerDown. Faça failover ou reinicie se o serviço SQL Server for interrompido.
- OnServerUnresponsive. Failover ou reinicialização se qualquer condição de valor inferior for atendida, além de quando o serviço SQL Server estiver conectado ao cluster e o limite healthCheckTimeout for excedido ou se a disponibilidade réplica 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 inclui condição de memória insuficiente, violação grave de acesso de gravação ou despejo excessivo.
- OnModerateServerError. Failover ou reinicialização se qualquer condição de valor inferior for atendida, além de ocorrer um erro moderado do Servidor, que inclui a condição de memória insuficiente persistente.
- OnAnyQualifiedFailureConditions. Failover ou reinicialização se qualquer condição de valor inferior for atendida, além de ocorrer uma condição de falha qualificada, que inclui esgotamento de thread de trabalho do mecanismo e deadlock insolúvel detectado.
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
Especifica o período de tempo, em milissegundos, após o qual Always On grupos de disponibilidade declaram um servidor sem resposta como não íntegro.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 de SQL Server estiver habilitada para Forçar Criptografia e quiser se conectar a uma instância usando nome do host/nome curto. Se esse parâmetro for omitido, será necessário passar o FQDN (Nome de Domínio Totalmente Qualificado) para -ServerInstance para se conectar a uma instância de SQL Server habilitada para Forçar Criptografia.
Esse parâmetro é novo na v22 do módulo.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Especifica a instância de SQL Server que hospeda o réplica primário do grupo de disponibilidade que esse cmdlet cria.
Type: | Server |
Position: | 2 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Especifica o nome do grupo de disponibilidade que esse cmdlet cria.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Especifica o caminho da instância de SQL Server que hospeda o réplica primário 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.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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
evitar o bloqueio de commits. Se o primário ficar indisponível e o usuário quiser fazer failover para um desses secundários, ele poderá incorrer em perda de dados. Ao definir RequiredSynchronizedSecondariesToCommit como algum número, o usuário poderá evitar a perda de dados, pois o primário começará a bloquear commits 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á commits. Isso é idêntico ao comportamento antes de SQL Server 2017.
Type: | Int32 |
Position: | Named |
Default value: | 0 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ReuseSystemDatabases
Esse parâmetro faz com que os bancos de dados independentes master
e msdb
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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Script
Indica que esse cmdlet retorna um script Transact-SQL que executa a tarefa que este cmdlet executa.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TrustServerCertificate
Indica se o canal será criptografado ao ignorar a movimentação da 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 interruptiva para scripts existentes.
Esse parâmetro é novo na v22 do módulo.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Microsoft.SqlServer.Management.Smo.Server
Você pode passar uma instância de servidor para esse cmdlet.
Saídas
Microsoft.SqlServer.Management.Smo.AvailabilityGroup
Esse cmdlet retorna um grupo de disponibilidade.