New-SqlAvailabilityGroup
Crea un grupo de disponibilidad.
Sintaxis
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
El cmdlet New-SqlAvailabilityGroup crea un grupo de disponibilidad en Grupos de disponibilidad AlwaysOn.
El parámetro InputObject o Path especifica el servidor que hospeda la réplica principal inicial.
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
Ejemplos
Ejemplo 1: Crear un grupo de disponibilidad
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")
El primer comando obtiene una instancia de SQL Server en el servidor principal y, a continuación, la almacena en la variable $PrimaryServer.
El cuarto comando crea una réplica que incluye la instancia del servidor secundario mediante New-SqlAvailabilityReplica y, a continuación, la almacena en la variable $SecondaryReplica.
El comando especifica la versión de la instancia del servidor mediante la propiedad Version de $SecondaryServer.
Ejemplo 2: Crear un grupo de disponibilidad respaldado por 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
Ejemplo 3: Creación de un clúster de grupos de disponibilidad independiente
# 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
Ejemplo 4: Crear un grupo de disponibilidad estableciendo el número de SYNCHRONOUS_COMMIT secundarias que deben estar disponibles para que las transacciones se confirmen en la principal
# 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
Nota: Se producirá una excepción si el parámetro -RequiredSynchronizedSecondariesToCommit se usa cuando la versión del servidor de destino es SQL Server 2016 o inferior.
Parámetros
-AccessToken
El token de acceso que se usa para autenticarse en SQL Server, como alternativa a la autenticación de usuario o contraseña de Windows.
Esto se puede usar, por ejemplo, para conectarse a SQL Azure DB
y SQL Azure Managed Instance
mediante un Service Principal
o un Managed Identity
.
El parámetro que se va a usar puede ser una cadena que representa el token o un objeto PSAccessToken
tal como se devuelve mediante la ejecución de Get-AzAccessToken -ResourceUrl https://database.windows.net
.
Este parámetro es nuevo en la versión 22 del módulo.
Tipo: | PSObject |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-AutomatedBackupPreference
Especifica la preferencia de copia de seguridad automatizada para el grupo de disponibilidad.
Los valores aceptables para este parámetro son:
- Primario. Especifica que las copias de seguridad siempre se producen en la réplica principal. Esta opción admite el uso de características que no están disponibles cuando la copia de seguridad se ejecuta en una réplica secundaria, como copias de seguridad diferenciales.
- SecondaryOnly. Especifica que las copias de seguridad nunca se realizan en las réplicas principales. Si la réplica principal es la única réplica en línea, no se produce la copia de seguridad.
- Secundario. Especifica que las copias de seguridad se producen en réplicas secundarias, a menos que la réplica principal sea la única réplica en línea. A continuación, la copia de seguridad se produce en la réplica principal.
- Ninguno. Especifica que el estado principal o secundario no se tiene en cuenta al decidir qué réplica realiza copias de seguridad. En su lugar, la prioridad de copia de seguridad y el estado en línea determinan qué réplica realiza las copias de seguridad.
Tipo: | AvailabilityGroupAutomatedBackupPreference |
Valores aceptados: | Primary, SecondaryOnly, Secondary, None, Unknown |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-AvailabilityReplica
Especifica una matriz de réplicas de disponibilidad que este cmdlet incluye en el grupo de disponibilidad.
Para obtener unAvailabilityReplica de
Tipo: | AvailabilityReplica[] |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-BasicAvailabilityGroup
Especifica si se va a crear un advanced
(valor predeterminado) o un grupo de disponibilidad de basic
.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-ClusterType
Tipo de clúster que respalda el grupo de disponibilidad. Los valores posibles son:
- Wsfc. El grupo de disponibilidad se integrará en el clúster de conmutación por error de Windows Server. Así es como se crean grupos de disponibilidad en SQL Server 2016 y a continuación. Este es el valor predeterminado.
- Ninguno. El grupo de disponibilidad será independiente del clúster.
- Externo. El grupo de disponibilidad se administrará mediante un administrador de clústeres que no sea un clúster de conmutación por error de Windows Server, como Pacemaker en Linux. Esto se admite en SQL Server 2017 y versiones posteriores. Al establecer como destino SQL Server en Linux, debe especificar este valor o un error occour.
Nota: Se producirá una excepción si se usa el parámetro -ClusterType cuando el servidor de destino es SQL Server 2016 y versiones posteriores.
Tipo: | AvailabilityGroupClusterType |
Valores aceptados: | Wsfc, None, External |
Posición: | Named |
Valor predeterminado: | Wsfc |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Confirm
Le pide confirmación antes de ejecutar el cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-ContainedAvailabilityGroup
Se usa para crear un grupo de disponibilidad independiente. Esta opción se usa para crear un grupo de disponibilidad con sus propias bases de datos de master
y msdb
, que se mantienen sincronizadas en el conjunto de réplicas del grupo de disponibilidad. Este parámetro se puede usar con su complementario -ReuseSystemDatabases.
Este parámetro solo se permite cuando el servidor SQL Server de destino admite grupos de disponibilidad independientes (SQL 2022 y versiones posteriores). Intentar usarlo es en versiones de SQL que no admiten grupos de disponibilidad independientes, lo que provocaría un error en el cmdlet.
Este parámetro solo está disponible en la versión 22+ del módulo.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Database
Especifica una matriz de bases de datos de usuario locales, de lectura y escritura. Estas bases de datos deben usar el modelo de recuperación completa y no deben usar AUTO_CLOSE. Estas bases de datos no pueden pertenecer a otro grupo de disponibilidad y no se pueden configurar para la creación de reflejo de la base de datos. Debe especificar un valor para este parámetro.
Tipo: | String[] |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-DatabaseHealthTrigger
Especifica si se debe desencadenar una conmutación automática por error del grupo de disponibilidad si alguna réplica de base de datos de usuario dentro de un grupo de disponibilidad encuentra una condición de error de base de datos.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-DtcSupportEnabled
Especifica si las bases de datos de un grupo de disponibilidad se registran con MSDTC en el nivel de instancia (valor predeterminado) o en el nivel por base de datos.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Encrypt
Tipo de cifrado que se va a usar al conectarse a SQL Server.
Este valor se asigna a la propiedad Encrypt
SqlConnectionEncryptOption
en el objeto SqlConnection del controlador Microsoft.Data.SqlClient.
En la versión 22 del módulo, el valor predeterminado es Optional
(por compatibilidad con v21). En la versión 23+ del módulo, el valor predeterminado será "Obligatorio", que puede crear un cambio importante para los scripts existentes.
Este parámetro es nuevo en la versión 22 del módulo.
Tipo: | String |
Valores aceptados: | Mandatory, Optional, Strict |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-FailureConditionLevel
Especifica el comportamiento de conmutación automática por error del grupo de disponibilidad. Los valores aceptables para este parámetro son:
- OnServerDown. Conmutación por error o reinicio si el servicio SQL Server se detiene.
- OnServerUnresponsive. Conmutación por error o reinicio si se cumple alguna condición de valor inferior, además de cuando el servicio SQL Server está conectado al clúster y se supera el umbral de HealthCheckTimeout, o si la réplica de disponibilidad actualmente en el rol principal está en estado de error.
- OnCriticalServerError. Conmutación por error o reinicio si se cumple alguna condición de valor inferior, además de cuando se produce un error crítico interno del servidor, que incluye una condición de memoria insuficiente, una infracción grave de acceso de escritura o demasiado volcado.
- OnModerateServerError. Conmutación por error o reinicio si se cumple alguna condición de valor inferior, además de si se produce un error moderado del servidor, lo que incluye una condición de memoria insuficiente persistente.
- OnAnyQualifiedFailureConditions. Conmutación por error o reinicio si se cumple alguna condición de valor inferior, además de si se produce una condición de error apta, que incluye el agotamiento de subprocesos de trabajo del motor y el interbloqueo irrecuperable detectado.
Tipo: | AvailabilityGroupFailureConditionLevel |
Valores aceptados: | OnServerDown, OnServerUnresponsive, OnCriticalServerErrors, OnModerateServerErrors, OnAnyQualifiedFailureCondition, Unknown |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-HealthCheckTimeout
Especifica el período de tiempo, en milisegundos, después del cual los grupos de disponibilidad AlwaysOn declaran que un servidor no responde es incorrecto.
Tipo: | Int32 |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-HostNameInCertificate
Nombre de host que se va a usar para validar el certificado TLS/SSL de SQL Server. Debe pasar este parámetro si la instancia de SQL Server está habilitada para Forzar cifrado y desea conectarse a una instancia mediante el nombre de host o el nombre corto. Si se omite este parámetro, es necesario pasar el nombre de dominio completo (FQDN) a -ServerInstance es necesario para conectarse a una instancia de SQL Server habilitada para Forzar cifrado.
Este parámetro es nuevo en la versión 22 del módulo.
Tipo: | String |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-InputObject
Especifica la instancia de SQL Server que hospeda la réplica principal del grupo de disponibilidad que crea este cmdlet.
Tipo: | Server |
Posición: | 2 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Name
Especifica el nombre del grupo de disponibilidad que crea este cmdlet.
Tipo: | String |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Path
Especifica la ruta de acceso de la instancia de SQL Server que hospeda la réplica principal inicial del grupo de disponibilidad que crea este cmdlet. Si no especifica este parámetro, este cmdlet usa la ubicación de trabajo actual. Si especifica un valor, la ruta de acceso debe existir actualmente.
Tipo: | String |
Posición: | 2 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-ProgressAction
Determina cómo Responde PowerShell a las actualizaciones de progreso generadas por un script, cmdlet o proveedor, como las barras de progreso generadas por el cmdlet Write-Progress. El cmdlet Write-Progress crea barras de progreso que muestran el estado de un comando.
Tipo: | ActionPreference |
Alias: | proga |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-RequiredSynchronizedSecondariesToCommit
Número de secundarias de confirmación sincrónicas que deben estar disponibles para poder confirmar en la principal.
Si una SYNCHRONOUS_COMMIT
secundaria está desconectada de la principal durante algún tiempo, la principal la desvía a ASYNCHRONOUS_COMMIT
para evitar bloqueos de confirmaciones. Si la principal deja de estar disponible y el usuario desea conmutar por error a una de estas secundarias, es posible que se produzca una pérdida de datos. Al establecer RequiredSynchronizedSecondariesToCommit en algún número, el usuario puede evitar la pérdida de datos, ya que la principal comenzará a bloquear confirmaciones si se degradan demasiados secundarios a ASYNCHRONOUS_COMMIT
.
El valor predeterminado de esta configuración es 0, lo que significa que la principal nunca bloqueará las confirmaciones. Esto es idéntico al comportamiento anterior a SQL Server 2017.
Tipo: | Int32 |
Posición: | Named |
Valor predeterminado: | 0 |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-ReuseSystemDatabases
Este parámetro hace que las bases de datos contenidas master
y msdb
de una versión anterior del grupo de disponibilidad se usen en la creación de este nuevo grupo de disponibilidad.
Si se intenta usar este parámetro sin especificar -ContainedAvailabilityGroup no se permite, el cmdlet producirá un error.
Este parámetro solo está disponible en la versión 22+ del módulo.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Script
Indica que este cmdlet devuelve un script de Transact-SQL que realiza la tarea que realiza este cmdlet.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-TrustServerCertificate
Indica si el canal se cifrará mientras se pasa la cadena de certificados para validar la confianza.
En la versión 22 del módulo, el valor predeterminado es $true
(por compatibilidad con v21). En la versión 23+ del módulo, el valor predeterminado será "$false", que puede crear un cambio importante para los scripts existentes.
Este parámetro es nuevo en la versión 22 del módulo.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-WhatIf
Muestra lo que sucedería si el cmdlet se ejecuta. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Alias: | wi |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Microsoft.SqlServer.Management.Smo.Server
Puede pasar una instancia de servidor a este cmdlet.
Salidas
Microsoft.SqlServer.Management.Smo.AvailabilityGroup
Este cmdlet devuelve un grupo de disponibilidad.