New-SqlAvailabilityGroup

Erstellt eine Verfügbarkeitsgruppe.

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

Beschreibung

Das Cmdlet New-SqlAvailabilityGroup erstellt eine Verfügbarkeitsgruppe in Always On Verfügbarkeitsgruppen.

Der Parameter InputObject oder Path gibt den Server an, der das anfängliche primäre Replikat hostet.

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

Beispiele

Beispiel 1: Erstellen einer Verfügbarkeitsgruppe

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

Mit dem ersten Befehl wird eine instance SQL Server auf dem primären Server abgerufen und anschließend in der variablen $PrimaryServer gespeichert.

Mit dem vierten Befehl wird ein Replikat erstellt, das den sekundären Server enthält, der mithilfe von New-SqlAvailabilityReplica instance, und speichert es dann in der variablen $SecondaryReplica.

Der Befehl gibt die Version des Servers instance mithilfe der Version-Eigenschaft von $SecondaryServer an.

Beispiel 2: Erstellen einer Verfügbarkeitsgruppe, die von WSFC unterstützt wird

# 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

Beispiel 3: Erstellen eines clusterunabhängigen Verfügbarkeitsgruppen

# 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

Beispiel 4: Erstellen einer Verfügbarkeitsgruppe, die die Anzahl der SYNCHRONOUS_COMMIT Sekundärdateien festlegt, die für Transaktionen zum Commit für die primäre Transaktion verfügbar sein müssen

# 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

Hinweis: Eine Ausnahme wird ausgelöst, wenn der Parameter -RequiredSynchronizedSecondariesToCommit verwendet wird, wenn die Zielserverversion SQL Server 2016 oder niedriger ist.

Parameter

-AccessToken

Das Zugriffstoken, das zur Authentifizierung bei SQL Server verwendet wird, als Alternative zur Benutzer-/Kennwort- oder Windows-Authentifizierung.

Dies kann z. B. verwendet werden, um eine Verbindung mit SQL Azure DB und SQL Azure Managed Instance mithilfe Service Principal von herzustellen Managed Identity.

Der zu verwendende Parameter kann entweder eine Zeichenfolge sein, die das Token darstellt, oder ein PSAccessToken Objekt, das durch ausführen Get-AzAccessToken -ResourceUrl https://database.windows.netzurückgegeben wird.

Dieser Parameter ist neu in v22 des Moduls.

Type:PSObject
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AutomatedBackupPreference

Gibt die Einstellung für die automatisierte Sicherung für die Verfügbarkeitsgruppe an.

Zulässige Werte für diesen Parameter:

  • Primär. Gibt an, dass die Sicherungen immer auf dem primären Replikat erfolgen. Diese Option unterstützt die Verwendung von Features, die nicht verfügbar sind, wenn die Sicherung auf einem sekundären Replikat ausgeführt wird, z. B. differenzielle Sicherungen.
  • SecondaryOnly: Gibt an, dass Sicherungen nie für primäre Replikate ausgeführt werden. Wenn das primäre Replikat das einzige Replikat online ist, erfolgt die Sicherung nicht.
  • Sekundären. Gibt an, dass Sicherungen auf sekundären Replikaten erfolgen, es sei denn, das primäre Replikat ist das einzige Replikat online. In diesem Fall erfolgt die Sicherung auf dem primären Replikat.
  • Keine. Gibt an, dass der primäre oder sekundäre status bei der Entscheidung, welches Replikat Sicherungen ausführt, nicht berücksichtigt wird. Stattdessen bestimmen Sicherungspriorität und Online-status, welches Replikat Sicherungen ausführt.
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

Gibt ein Array von Verfügbarkeitsreplikaten an, das dieses Cmdlet in die Verfügbarkeitsgruppe einschließt. Verwenden Sie das Cmdlet New-SqlAvailabilityReplica, um eine AvailabilityReplica-Instanz abzurufen. Geben Sie den AsTemplate-Parameter an .

Type:AvailabilityReplica[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-BasicAvailabilityGroup

Gibt an, ob eine advanced Verfügbarkeitsgruppe (Standard) oder eine basic Verfügbarkeitsgruppe erstellt werden soll.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ClusterType

Der Typ des Clusters, der die Ag sichert. Mögliche Werte:

  • Wsfc. Die Ag wird in den Windows Server-Failovercluster integriert. Auf diese Weise werden AGs in SQL Server 2016 und niedriger erstellt. Dies ist die Standardoption.
  • Keine. Die Ag ist clusterunabhängig.
  • Externen. Die Ag wird von einem Cluster-Manager verwaltet, bei dem es sich nicht um einen Windows Server-Failovercluster handelt, wie Pacemaker unter Linux. Dies wird in SQL Server 2017 und höher unterstützt. Wenn Sie SQL Server für Linux anvisieren, müssen Sie diesen Wert angeben, sonst tritt ein Fehler auf.

Hinweis: Eine Ausnahme wird ausgelöst, wenn der -ClusterType-Parameter verwendet wird, wenn der Zielserver SQL Server 2016 und niedriger ist.

Type:AvailabilityGroupClusterType
Accepted values:Wsfc, None, External
Position:Named
Default value:Wsfc
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ContainedAvailabilityGroup

Wird zum Erstellen einer eigenständigen Verfügbarkeitsgruppe verwendet. Diese Option wird verwendet, um eine Verfügbarkeitsgruppe mit eigenen master- und msdb-Datenbanken zu erstellen, die über die Gruppe der Replikate in der Verfügbarkeitsgruppe synchronisiert werden. Dieser Parameter kann mit seinem Begleitobjekt -ReuseSystemDatabases verwendet werden.

Dieser Parameter ist nur zulässig, wenn das Ziel SQL Server eigenständige Verfügbarkeitsgruppen (SQL 2022 und höher) unterstützt. Der Versuch, die Verwendung für SQL-Versionen zu verwenden, die keine eigenständigen Verfügbarkeitsgruppen unterstützen, führt dazu, dass das Cmdlet einen Fehler auslöst.

Dieser Parameter ist nur in Version 22 und höher des Moduls verfügbar.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Database

Gibt ein Array lokaler Benutzerdatenbanken mit Lese-/Schreibzugriff an. Diese Datenbanken müssen das vollständige Wiederherstellungsmodell verwenden und dürfen keine AUTO_CLOSE verwenden. Diese Datenbanken dürfen keiner anderen Verfügbarkeitsgruppe angehören und können nicht für die Datenbankspiegelung konfiguriert werden. Sie müssen einen Wert für diesen Parameter angeben.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DatabaseHealthTrigger

Gibt an, ob ein automatisches Failover der Verfügbarkeitsgruppe ausgelöst werden soll, wenn bei einem Benutzerdatenbankreplikat innerhalb einer Verfügbarkeitsgruppe eine Datenbankfehlerbedingung auftritt.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DtcSupportEnabled

Gibt an, ob Sich Datenbanken innerhalb einer Verfügbarkeitsgruppe bei MSDTC auf instance-Ebene (Standard) oder auf Datenbankebene registrieren.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encrypt

Der Verschlüsselungstyp, der beim Herstellen einer Verbindung mit SQL Server verwendet werden soll.

Dieser Wert wird der Encrypt Eigenschaft SqlConnectionEncryptOption des SqlConnection-Objekts des Microsoft.Data.SqlClient-Treibers zugeordnet.

In v22 des Moduls ist Optional der Standardwert (aus Kompatibilität mit v21). In v23+ des Moduls lautet der Standardwert "Obligatorisch", wodurch möglicherweise eine Breaking Change für vorhandene Skripts entsteht.

Dieser Parameter ist neu in v22 des Moduls.

Type:String
Accepted values:Mandatory, Optional, Strict
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FailureConditionLevel

Gibt das automatische Failoververhalten der Verfügbarkeitsgruppe an. Zulässige Werte für diesen Parameter:

  • OnServerDown. Failover oder Neustart, wenn der SQL Server Dienst beendet wird.
  • OnServerUnresponsive. Failover oder Neustart, wenn eine Bedingung mit einem niedrigeren Wert erfüllt ist, und wenn der SQL Server-Dienst mit dem Cluster verbunden ist und der HealthCheckTimeout-Schwellenwert überschritten wird, oder wenn das Verfügbarkeitsreplikat, das sich derzeit in der primären Rolle befindet, einen fehlerbehafteten Zustand aufweist.
  • OnCriticalServerError. Failover oder Neustart, wenn eine Bedingung mit einem niedrigeren Wert erfüllt ist, und wenn ein interner kritischer Serverfehler auftritt, der zu einer fehlenden Arbeitsspeicherbedingung, einer schwerwiegenden Schreibzugriffsverletzung oder einem zu großen Dumping gehören.
  • OnModerateServerError. Failover oder Neustart, wenn eine Bedingung mit einem niedrigeren Wert erfüllt ist, und wenn ein moderater Serverfehler auftritt, der persistente Nicht-Speicherbedingung enthält.
  • OnAnyQualifiedFailureConditions. Failover oder Neustart, wenn eine Bedingung mit einem niedrigeren Wert erfüllt ist, sowie wenn eine qualifizierende Fehlerbedingung auftritt, die die Erschöpfung des Engine-Workerthreads und den erkannten unlösbaren Deadlock umfasst.
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

Gibt die Zeitspanne in Millisekunden an, nach der Always On Verfügbarkeitsgruppen einen nicht reagierenden Server als fehlerhaft deklarieren.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostNameInCertificate

Der Hostname, der beim Überprüfen des TLS/SSL-Zertifikats von SQL Server verwendet werden soll. Sie müssen diesen Parameter übergeben, wenn Ihr SQL Server instance für Verschlüsselung erzwingen aktiviert ist und Sie eine Verbindung mit einer instance mithilfe von hostname/shortname herstellen möchten. Wenn dieser Parameter nicht angegeben wird, ist das Übergeben des vollqualifizierten Domänennamens (Fully Qualified Domain Name, FQDN) an -ServerInstance erforderlich, um eine Verbindung mit einem für Die Verschlüsselung erzwingen aktivierten SQL Server instance herzustellen.

Dieser Parameter ist neu in v22 des Moduls.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Gibt die instance von SQL Server an, die das primäre Replikat der Verfügbarkeitsgruppe hostet, die dieses Cmdlet erstellt.

Type:Server
Position:2
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

Gibt den Namen der Verfügbarkeitsgruppe an, die dieses Cmdlet erstellt.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Path

Gibt den Pfad der instance von SQL Server an, die das anfängliche primäre Replikat der Verfügbarkeitsgruppe hostet, die dieses Cmdlet erstellt. Wenn Sie diesen Parameter nicht angeben, verwendet dieses Cmdlet den aktuellen Arbeitsstandort. Wenn Sie einen Wert angeben, muss der Pfad derzeit vorhanden sein.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RequiredSynchronizedSecondariesToCommit

Die Anzahl der synchronen Commit-Sekundärdateien, die verfügbar sein müssen, um für den primären Commit zu commiten.

Wenn ein sekundäres SYNCHRONOUS_COMMIT Element für einige Zeit von der primären Getrennt ist, wird es vom primären so herabgestuft, dass ASYNCHRONOUS_COMMIT Commits nicht blockiert werden. Wenn das primäre Element dann nicht mehr verfügbar ist und der Benutzer ein Failover zu einer dieser Sekundärdateien durchführen möchte, kann es zu Datenverlusten führen. Durch Festlegen von RequiredSynchronizedSecondariesToCommit auf eine Bestimmte Zahl kann der Benutzer den Datenverlust verhindern, da der primäre Commit blockiert, wenn zu viele Sekundärdateien in ASYNCHRONOUS_COMMITherabgestuft werden.

Der Standardwert dieser Einstellung ist 0. Dies bedeutet, dass der primäre Commit nie blockiert. Dies ist identisch mit dem Verhalten vor SQL Server 2017.

Type:Int32
Position:Named
Default value:0
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ReuseSystemDatabases

Dieser Parameter bewirkt, dass die enthaltenen master Datenbanken und msdb aus einer früheren Version der Verfügbarkeitsgruppe bei der Erstellung dieser neuen Verfügbarkeitsgruppe verwendet werden.

Wenn Sie versuchen, diesen Parameter zu verwenden, ohne -ContainedAvailabilityGroup ist nicht zulässig, löst das Cmdlet einen Fehler aus.

Dieser Parameter ist nur in Version 22 und höher des Moduls verfügbar.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Script

Gibt an, dass dieses Cmdlet ein Transact-SQL-Skript zurückgibt, das die Aufgabe ausführt, die dieses Cmdlet ausführt.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TrustServerCertificate

Gibt an, ob der Kanal verschlüsselt wird, während das Durchlaufen der Zertifikatkette zum Überprüfen der Vertrauensstellung umgangen wird.

In v22 des Moduls ist $true der Standardwert (aus Kompatibilität mit v21). In Version 23 und höher des Moduls lautet der Standardwert "$false", was zu einer Breaking Change für vorhandene Skripts führen kann.

Dieser Parameter ist in v22 des Moduls neu.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

Microsoft.SqlServer.Management.Smo.Server

Sie können einen Server instance an dieses Cmdlet übergeben.

Ausgaben

Microsoft.SqlServer.Management.Smo.AvailabilityGroup

Dieses Cmdlet gibt eine Verfügbarkeitsgruppe zurück.