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.net
zurü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_COMMIT
herabgestuft 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.