Partager via


New-SqlAvailabilityGroup

Crée un groupe de disponibilité.

Syntaxe

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

L’applet de commande New-SqlAvailabilityGroup crée un groupe de disponibilité dans les groupes de disponibilité Always On.

Le paramètre InputObject ou Path spécifie le serveur qui héberge le réplica principal initial.

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

Exemples

Exemple 1 : Créer un groupe de disponibilité

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

La première commande obtient une instance de SQL Server sur le serveur principal, puis la stocke dans la variable $PrimaryServer.

La quatrième commande crée un réplica qui inclut l’instance de serveur secondaire à l’aide de New-SqlAvailabilityReplica, puis le stocke dans la variable $SecondaryReplica.

La commande spécifie la version de l’instance de serveur à l’aide de la propriété Version de $SecondaryServer.

Exemple 2 : Créer un groupe de disponibilité soutenu par 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

Exemple 3 : Créer un cluster de groupes de disponibilité indépendant

# 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

Exemple 4 : Créer un groupe de disponibilité définissant le nombre de SYNCHRONOUS_COMMIT secondaires qui doivent être disponibles pour que les transactions soient validées sur le serveur 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

Remarque : Une exception est levée si le paramètre -RequiredSynchronizedSecondariesToCommit est utilisé lorsque la version du serveur cible est SQL Server 2016 ou inférieure.

Paramètres

-AccessToken

Jeton d’accès utilisé pour s’authentifier auprès de SQL Server, comme alternative à l’authentification utilisateur/mot de passe ou Windows.

Cela peut être utilisé, par exemple, pour se connecter à SQL Azure DB et SQL Azure Managed Instance à l’aide d’un Service Principal ou d’un Managed Identity.

Le paramètre à utiliser peut être une chaîne représentant le jeton ou un objet PSAccessToken tel qu’il est retourné en exécutant Get-AzAccessToken -ResourceUrl https://database.windows.net.

Ce paramètre est nouveau dans v22 du module.

Type:PSObject
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-AutomatedBackupPreference

Spécifie la préférence de sauvegarde automatisée pour le groupe de disponibilité.

Les valeurs acceptables pour ce paramètre sont les suivantes :

  • Primaire. Spécifie que les sauvegardes se produisent toujours sur le réplica principal. Cette option prend en charge l’utilisation de fonctionnalités non disponibles lorsque la sauvegarde s’exécute sur un réplica secondaire, comme les sauvegardes différentielles.
  • SecondaryOnly. Spécifie que les sauvegardes ne sont jamais effectuées sur les réplicas principaux. Si le réplica principal est le seul réplica en ligne, la sauvegarde ne se produit pas.
  • Secondaire. Spécifie que les sauvegardes se produisent sur des réplicas secondaires, sauf si le réplica principal est le seul réplica en ligne. Ensuite, la sauvegarde se produit sur le réplica principal.
  • Aucun. Spécifie que l’état principal ou secondaire n’est pas pris en compte lors du choix du réplica qui effectue des sauvegardes. Au lieu de cela, la priorité de sauvegarde et l’état en ligne déterminent quel réplica effectue des sauvegardes.
Type:AvailabilityGroupAutomatedBackupPreference
Valeurs acceptées:Primary, SecondaryOnly, Secondary, None, Unknown
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-AvailabilityReplica

Spécifie un tableau de réplicas de disponibilité que cette applet de commande inclut dans le groupe de disponibilité. Pour obtenir unAvailabilityReplica , utilisez l’applet de commande New-SqlAvailabilityReplica . Spécifiez le paramètre AsTemplate.

Type:AvailabilityReplica[]
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-BasicAvailabilityGroup

Spécifie s’il faut créer un advanced (valeur par défaut) ou un groupe de disponibilité basic.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ClusterType

Type de cluster qui sauvegarde le groupe de disponibilité. Les valeurs possibles sont les suivantes :

  • Wsfc. Le groupe de disponibilité sera intégré au cluster de basculement Windows Server. C’est ainsi que les groupes de sécurité dans SQL Server 2016 et ci-dessous sont créés. Il s’agit de la valeur par défaut.
  • Aucun. Le groupe de disponibilité sera indépendant du cluster.
  • Externe. Le groupe de disponibilité sera géré par un gestionnaire de cluster qui n’est pas un cluster de basculement Windows Server, tel que Pacemaker sur Linux. Cela est pris en charge dans SQL Server 2017 et versions ultérieures. Lorsque vous ciblez SQL Server sur Linux, vous devez spécifier cette valeur ou une erreur s’affiche.

Remarque : Une exception est levée si le paramètre -ClusterType est utilisé lorsque le serveur cible est SQL Server 2016 et ci-dessous.

Type:AvailabilityGroupClusterType
Valeurs acceptées:Wsfc, None, External
Position:Named
Valeur par défaut:Wsfc
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Confirm

Vous invite à confirmer avant d’exécuter l’applet de commande.

Type:SwitchParameter
Alias:cf
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ContainedAvailabilityGroup

Permet de créer un groupe de disponibilité autonome. Cette option permet de créer un groupe de disponibilité avec ses propres bases de données master et msdb, qui sont synchronisées entre l’ensemble de réplicas du groupe de disponibilité. Ce paramètre peut être utilisé avec son compagnon -ReuseSystemDatabases.

Ce paramètre est autorisé uniquement lorsque le serveur SQL Server cible prend en charge les groupes de disponibilité autonomes (SQL 2022 et versions ultérieures). La tentative d’utilisation concerne les versions de SQL qui ne prennent pas en charge les groupes de disponibilité autonome entraînent la levée d’une erreur par l’applet de commande.

Ce paramètre est disponible uniquement dans la version 22+ du module.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Database

Spécifie un tableau de bases de données utilisateur locales en lecture/écriture. Ces bases de données doivent utiliser le modèle de récupération complète et ne doivent pas utiliser AUTO_CLOSE. Ces bases de données ne peuvent pas appartenir à un autre groupe de disponibilité et ne peuvent pas être configurées pour la mise en miroir de bases de données. Vous devez spécifier une valeur pour ce paramètre.

Type:String[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-DatabaseHealthTrigger

Spécifie s’il faut déclencher un basculement automatique du groupe de disponibilité si un réplica de base de données utilisateur au sein d’un groupe de disponibilité rencontre une condition d’échec de base de données.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-DtcSupportEnabled

Spécifie si les bases de données au sein d’un groupe de disponibilité s’inscrivent auprès de MSDTC au niveau de l’instance (par défaut) ou au niveau de la base de données par base de données.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Encrypt

Type de chiffrement à utiliser lors de la connexion à SQL Server.

Cette valeur est mappée à la propriété EncryptSqlConnectionEncryptOption sur l’objet SqlConnection du pilote Microsoft.Data.SqlClient.

Dans la version 22 du module, la valeur par défaut est Optional (pour la compatibilité avec v21). Dans la version 23+ du module, la valeur par défaut est « Obligatoire », ce qui peut créer une modification cassant pour les scripts existants.

Ce paramètre est nouveau dans v22 du module.

Type:String
Valeurs acceptées:Mandatory, Optional, Strict
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-FailureConditionLevel

Spécifie le comportement de basculement automatique du groupe de disponibilité. Les valeurs acceptables pour ce paramètre sont les suivantes :

  • OnServerDown. Basculement ou redémarrage si le service SQL Server s’arrête.
  • OnServerUnresponsive. Basculement ou redémarrage si une condition de valeur inférieure est satisfaite, ainsi que lorsque le service SQL Server est connecté au cluster et que le seuil HealthCheckTimeout est dépassé ou si le réplica de disponibilité actuellement en rôle principal est dans un état d’échec.
  • OnCriticalServerError. Basculement ou redémarrage si une condition de valeur inférieure est satisfaite, plus lorsqu’une erreur de serveur critique interne se produit, qui inclut une condition de mémoire insuffisante, une violation grave d’accès en écriture ou trop de vidage.
  • OnModerateServerError. Basculement ou redémarrage si une condition de valeur inférieure est satisfaite, plus si une erreur serveur modérée se produit, ce qui inclut une condition persistante de mémoire insuffisante.
  • OnAnyQualifiedFailureConditions. Basculement ou redémarrage si une condition de valeur inférieure est satisfaite, plus si une condition d’échec éligible se produit, ce qui inclut l’épuisement des threads de travail du moteur et un blocage irrésolvable détecté.
Type:AvailabilityGroupFailureConditionLevel
Valeurs acceptées:OnServerDown, OnServerUnresponsive, OnCriticalServerErrors, OnModerateServerErrors, OnAnyQualifiedFailureCondition, Unknown
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-HealthCheckTimeout

Spécifie la durée, en millisecondes, après laquelle les groupes de disponibilité Always On déclarent un serveur non répondif pour être défectueux.

Type:Int32
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-HostNameInCertificate

Nom d’hôte à utiliser pour valider le certificat TLS/SSL SQL Server. Vous devez passer ce paramètre si votre instance SQL Server est activée pour Forcer le chiffrement et que vous souhaitez vous connecter à une instance à l’aide du nom d’hôte/shortname. Si ce paramètre est omis, le passage du nom de domaine complet (FQDN) à -ServerInstance est nécessaire pour se connecter à une instance SQL Server activée pour Forcer le chiffrement.

Ce paramètre est nouveau dans v22 du module.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InputObject

Spécifie l’instance de SQL Server qui héberge le réplica principal du groupe de disponibilité créé par cette applet de commande.

Type:Server
Position:2
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Name

Spécifie le nom du groupe de disponibilité créé par cette applet de commande.

Type:String
Position:1
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Path

Spécifie le chemin d’accès de l’instance de SQL Server qui héberge le réplica principal initial du groupe de disponibilité créé par cette applet de commande. Si vous ne spécifiez pas ce paramètre, cette applet de commande utilise l’emplacement de travail actuel. Si vous spécifiez une valeur, le chemin d’accès doit exister actuellement.

Type:String
Position:2
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ProgressAction

Détermine comment PowerShell répond aux mises à jour de progression générées par un script, une applet de commande ou un fournisseur, telles que les barres de progression générées par l’applet de commande Write-Progress. L’applet de commande Write-Progress crée des barres de progression qui affichent l’état d’une commande.

Type:ActionPreference
Alias:proga
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-RequiredSynchronizedSecondariesToCommit

Nombre de secondaires de validation synchrone qui doivent être disponibles pour être en mesure de valider sur le serveur principal.

Si un SYNCHRONOUS_COMMIT secondaire est déconnecté de la base de données primaire pendant un certain temps, le principal le rétrograde vers ASYNCHRONOUS_COMMIT pour éviter les validations bloquantes. Si le serveur principal devient indisponible et que l’utilisateur souhaite basculer vers l’un de ces secondaires, il peut entraîner une perte de données. En définissant RequiredSynchronizedSecondariesToCommit à un certain nombre, l’utilisateur peut empêcher la perte de données, car le serveur principal commence à bloquer les validations si un trop grand nombre de secondaires sont rétrogradés à ASYNCHRONOUS_COMMIT.

La valeur par défaut de ce paramètre est 0, ce qui signifie que le serveur principal ne bloque jamais les validations. Cela est identique au comportement avant SQL Server 2017.

Type:Int32
Position:Named
Valeur par défaut:0
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ReuseSystemDatabases

Ce paramètre entraîne l’utilisation des bases de données master et msdb contenues à partir d’une version antérieure du groupe de disponibilité lors de la création de ce nouveau groupe de disponibilité.

Si vous essayez d’utiliser ce paramètre sans spécifier -ContainedAvailabilityGroup n’est pas autorisé, l’applet de commande génère une erreur.

Ce paramètre est disponible uniquement dans la version 22+ du module.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Script

Indique que cette applet de commande retourne un script Transact-SQL qui effectue la tâche effectuée par cette applet de commande.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-TrustServerCertificate

Indique si le canal sera chiffré lors du contournement de la marche à pied de la chaîne de certificats pour valider l’approbation.

Dans la version 22 du module, la valeur par défaut est $true (pour la compatibilité avec v21). Dans v23+ du module, la valeur par défaut est « $false », ce qui peut créer une modification cassant pour les scripts existants.

Ce paramètre est nouveau dans v22 du module.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-WhatIf

Affiche ce qui se passerait si l’applet de commande s’exécute. L’applet de commande n’est pas exécutée.

Type:SwitchParameter
Alias:wi
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

Microsoft.SqlServer.Management.Smo.Server

Vous pouvez transmettre une instance de serveur à cette applet de commande.

Sorties

Microsoft.SqlServer.Management.Smo.AvailabilityGroup

Cette applet de commande retourne un groupe de disponibilité.