New-SqlAvailabilityGroup
Crée un groupe de disponibilité.
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
L’applet de commande New-SqlAvailabilityGroup crée un groupe de disponibilité dans Always On groupes de disponibilité.
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 le serveur secondaire instance à l’aide de New-SqlAvailabilityReplica, puis le stocke dans la variable $SecondaryReplica.
La commande spécifie la version du serveur instance à 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 une version antérieure.
Paramètres
-AccessToken
Le jeton d’accès utilisé pour s’authentifier auprès de SQL Server, en guise d’alternative à l’authentification utilisateur/mot de passe ou à l’authentification Windows.
Cela peut être utilisé, par exemple, pour se connecter à et à SQL Azure DB
l’aide d’un Service Principal
ou d’un Managed Identity
.SQL Azure Managed Instance
Le paramètre à utiliser peut être une chaîne représentant le jeton ou un PSAccessToken
objet retourné en exécutant Get-AzAccessToken -ResourceUrl https://database.windows.net
.
Ce paramètre est nouveau dans v22 du module.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AutomatedBackupPreference
Spécifie la préférence de sauvegarde automatisée pour le groupe de disponibilité.
Les valeurs valides pour ce paramètre sont :
- 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 n’a pas lieu.
- Secondaire. Spécifie que les sauvegardes se produisent sur les réplicas secondaires, sauf si le réplica principal est le seul réplica en ligne. Dans ce cas, la sauvegarde est effectuée sur le réplica principal.
- Aucun. Spécifie que le status principal ou secondaire n’est pas pris en compte lors de la décision de l’réplica effectuer des sauvegardes. Au lieu de cela, la priorité de sauvegarde et les status en ligne déterminent quel réplica effectue les sauvegardes.
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
Spécifie un tableau de réplicas de disponibilité que cette applet de commande inclut dans le groupe de disponibilité. Pour obtenir un AvailabilityReplica, utilisez l’applet de commande New-SqlAvailabilityReplica . Spécifiez le paramètre AsTemplate .
Type: | AvailabilityReplica[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-BasicAvailabilityGroup
Spécifie s’il faut créer un advanced
groupe (par défaut) ou un groupe de basic
disponibilité.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ClusterType
Type de cluster qui soutient 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 disponibilité dans SQL Server 2016 et les versions ultérieures 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, comme Pacemaker sur Linux. Cette option est prise en charge dans SQL Server 2017 et versions ultérieures. Lorsque vous ciblez SQL Server sur Linux, vous devez spécifier cette valeur, sinon une erreur se produit.
Remarque : Une exception est levée si le paramètre -ClusterType est utilisé lorsque le serveur cible est SQL Server 2016 et versions ultérieures.
Type: | AvailabilityGroupClusterType |
Accepted values: | Wsfc, None, External |
Position: | Named |
Default value: | Wsfc |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Vous demande une confirmation avant d’exécuter l’applet de commande.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ContainedAvailabilityGroup
Utilisé pour 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
, lesquelles sont synchronisées sur l’ensemble de réplicas du groupe de disponibilité. Ce paramètre peut être utilisé avec son compagnon -ReuseSystemDatabases.
Ce paramètre n’est autorisé que lorsque le SQL Server cible prend en charge les groupes de disponibilité autonomes (SQL 2022 et versions ultérieures). La tentative d’utilisation est par rapport aux versions de SQL qui ne prennent pas en charge les groupes de disponibilité autonomes entraînerait 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DatabaseHealthTrigger
Spécifie s’il faut déclencher un basculement automatique du groupe de disponibilité si une base de données utilisateur réplica au sein d’un groupe de disponibilité rencontre une condition de défaillance de base de données.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 instance (par défaut) ou au niveau par base de données.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encrypt
Type de chiffrement à utiliser lors de la connexion à SQL Server.
Cette valeur est mappée à la Encrypt
propriété SqlConnectionEncryptOption
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 v23+ 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 |
Accepted values: | Mandatory, Optional, Strict |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FailureConditionLevel
Spécifie le comportement de basculement automatique du groupe de disponibilité. Les valeurs valides pour ce paramètre sont :
- 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 remplie, 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 dans le rôle principal est dans un état d’échec.
- OnCriticalServerError. Basculement ou redémarrage si une condition de valeur inférieure est satisfaite, ainsi qu’en cas d’erreur de serveur critique interne, qui inclut une mémoire insuffisante, une violation grave de l’accès en écriture ou un dumping trop important.
- OnModerateServerError. Basculement ou redémarrage si une condition de valeur inférieure est satisfaite, plus si une erreur de serveur modérée se produit, ce qui inclut une condition de mémoire insuffisante persistante.
- 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 du thread worker du moteur et le blocage irrésolvable détecté.
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
Spécifie la durée, en millisecondes, après laquelle Always On groupes de disponibilité déclarent qu’un serveur qui ne répond pas est défectueux.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostNameInCertificate
Nom d’hôte à utiliser pour valider le certificat SQL Server TLS/SSL. Vous devez passer ce paramètre si votre SQL Server instance est activé pour Forcer le chiffrement et que vous souhaitez vous connecter à un instance à l’aide d’un nom d’hôte/nom court. Si ce paramètre est omis, le passage du nom de domaine complet (FQDN) à -ServerInstance est nécessaire pour se connecter à un SQL Server instance activé pour forcer le chiffrement.
Ce paramètre est nouveau dans v22 du module.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Spécifie la 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 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Spécifie le nom du groupe de disponibilité créé par cette applet de commande.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Spécifie le chemin d’accès du 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.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RequiredSynchronizedSecondariesToCommit
Nombre de secondaires de validation synchrone qui doivent être disponibles pour pouvoir valider sur le serveur principal.
Si un secondaire est déconnecté du serveur principal pendant un SYNCHRONOUS_COMMIT
certain temps, le principal le rétrograde pour ASYNCHRONOUS_COMMIT
éviter de bloquer les commits. Si le serveur principal devient alors 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 sur un certain nombre, l’utilisateur peut empêcher la perte de données, car le principal commence à bloquer les commits si trop de secondaires sont rétrogradés à ASYNCHRONOUS_COMMIT
.
La valeur par défaut de ce paramètre est 0, ce qui signifie que le principal ne bloque jamais les commits. Ce comportement est identique au comportement avant SQL Server 2017.
Type: | Int32 |
Position: | Named |
Default value: | 0 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ReuseSystemDatabases
Ce paramètre entraîne l’utilisation des bases de données contenues master
et msdb
d’une version antérieure du groupe de disponibilité dans 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 uniquement disponible dans la version 22+ du module.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TrustServerCertificate
Indique si le canal sera chiffré tout en contournant 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 la version 22 du module.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Microsoft.SqlServer.Management.Smo.Server
Vous pouvez passer un serveur instance à cette applet de commande.
Sorties
Microsoft.SqlServer.Management.Smo.AvailabilityGroup
Cette applet de commande retourne un groupe de disponibilité.