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>]
[-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>]
Beschreibung
Das Cmdlet New-SqlAvailabilityGroup erstellt eine Verfügbarkeitsgruppe in AlwaysOn-Verfügbarkeitsgruppen.
Der Parameter InputObject oder Path gibt den Server an, auf dem das ursprüngliche primäre Replikat gehostet wird.
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")
Der erste Befehl ruft eine Instanz von SQL Server auf dem primären Server ab und speichert sie dann in der $PrimaryServer Variablen.
Der vierte Befehl erstellt ein Replikat, das die sekundäre Serverinstanz mithilfe von New-SqlAvailabilityReplica enthält, und speichert es dann in der $SecondaryReplica Variablen.
Der Befehl gibt die Version der Serverinstanz 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 unabhängigen Verfügbarkeitsgruppenclusters
# 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 sie eine Verfügbarkeitsgruppen, die die Anzahl der SYNCHRONOUS_COMMIT Secondaries festlegen, die für Transaktionen verfügbar sein müssen, um sich für den primären Commit zu übernehmen.
# 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. zum Herstellen einer Verbindung mit SQL Azure DB
und SQL Azure Managed Instance
mithilfe eines Service Principal
oder einer Managed Identity
verwendet werden.
Der zu verwendende Parameter kann entweder eine Zeichenfolge sein, die das Token darstellt, oder ein PSAccessToken
-Objekt, wie durch Ausführen von Get-AzAccessToken -ResourceUrl https://database.windows.net
zurückgegeben wird.
Dieser Parameter ist neu in v22 des Moduls.
Typ: | PSObject |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-AutomatedBackupPreference
Gibt die automatische Sicherungseinstellung für die Verfügbarkeitsgruppe an.
Die zulässigen Werte für diesen Parameter sind:
- Primär. Gibt an, dass die Sicherungen immer im primären Replikat auftreten. 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 Onlinereplikat ist, tritt die Sicherung nicht auf.
- Sekundär. Gibt an, dass Sicherungen auf sekundären Replikaten auftreten, es sei denn, das primäre Replikat ist das einzige Replikat online. Anschließend tritt die Sicherung auf dem primären Replikat auf.
- Nichts. Gibt an, dass der primäre oder sekundäre Status bei der Entscheidung, welches Replikat Sicherungen ausführt, nicht berücksichtigt wird. Stattdessen bestimmen die Sicherungspriorität und der Onlinestatus, welches Replikat Sicherungen ausführt.
Typ: | AvailabilityGroupAutomatedBackupPreference |
Zulässige Werte: | Primary, SecondaryOnly, Secondary, None, Unknown |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-AvailabilityReplica
Gibt ein Array von Verfügbarkeitsreplikaten an, die dieses Cmdlet in die Verfügbarkeitsgruppe einschließt. Verwenden Sie zum Abrufen eines AvailabilityReplica-das Cmdlet New-SqlAvailabilityReplica. Geben Sie den AsTemplate--Parameter an.
Typ: | AvailabilityReplica[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-BasicAvailabilityGroup
Gibt an, ob eine advanced
(Standard) oder eine basic
Verfügbarkeitsgruppe erstellt werden soll.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ClusterType
Der Typ des Clusters, der die AG sichert. Mögliche Werte sind:
- Wsfc. Die AG wird in Windows Server-Failovercluster integriert. So werden AGs in SQL Server 2016 und unten erstellt. Dies ist die Standardeinstellung.
- Nichts. Die AG wird clusterunabhängig sein.
- Äußerlich. Die AG wird von einem Clustermanager verwaltet, der kein Windows Server-Failovercluster ist, wie Pacemaker unter Linux. Dies wird in SQL Server 2017 und höher unterstützt. Bei der Zielbestimmung von SQL Server unter Linux müssen Sie diesen Wert angeben, oder ein Fehler wird occour.
Hinweis: Eine Ausnahme wird ausgelöst, wenn der parameter -ClusterType verwendet wird, wenn der Zielserver SQL Server 2016 und darunter ist.
Typ: | AvailabilityGroupClusterType |
Zulässige Werte: | Wsfc, None, External |
Position: | Named |
Standardwert: | Wsfc |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Confirm
Fordert Sie vor dem Ausführen des Cmdlets zur Bestätigung auf.
Typ: | SwitchParameter |
Aliase: | cf |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ContainedAvailabilityGroup
Wird verwendet, um eine enthaltene Verfügbarkeitsgruppe zu erstellen. Diese Option wird verwendet, um eine Verfügbarkeitsgruppe mit eigenen master
und msdb
Datenbanken zu erstellen, die über die Replikatgruppe in der Verfügbarkeitsgruppe synchronisiert werden. Dieser Parameter kann mit seinem Begleit--ReuseSystemDatabasesverwendet werden.
Dieser Parameter ist nur zulässig, wenn der Ziel-SQL Server enthaltene Verfügbarkeitsgruppen (SQL 2022 und höher) unterstützt. Bei dem Versuch, sql-Versionen zu verwenden, die enthaltene Verfügbarkeitsgruppen nicht unterstützen, würde das Cmdlet einen Fehler auslösen.
Dieser Parameter ist nur in Version 22+ des Moduls verfügbar.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Database
Gibt ein Array lokaler Benutzerdatenbanken mit Lese-/Schreibzugriff an. Diese Datenbanken müssen das vollständige Wiederherstellungsmodell verwenden und dürfen nicht AUTO_CLOSE verwenden. Diese Datenbanken können nicht zu einer anderen Verfügbarkeitsgruppe gehören und können nicht für die Datenbankspiegelung konfiguriert werden. Sie müssen einen Wert für diesen Parameter angeben.
Typ: | String[] |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-DatabaseHealthTrigger
Gibt an, ob ein automatisches Failover der Verfügbarkeitsgruppe ausgelöst werden soll, wenn ein Benutzerdatenbankreplikat innerhalb einer Verfügbarkeitsgruppe auf eine Datenbankfehlerbedingung stößt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-DtcSupportEnabled
Gibt an, ob Datenbanken innerhalb einer Verfügbarkeitsgruppe bei MSDTC auf Instanzebene (Standard) oder auf Datenbankebene registriert werden.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Encrypt
Der Verschlüsselungstyp, der beim Herstellen einer Verbindung mit SQL Server verwendet werden soll.
Dieser Wert ist der Encrypt
Eigenschaft SqlConnectionEncryptOption
für das SqlConnection-Objekt des Microsoft.Data.SqlClient-Treibers zugeordnet.
In v22 des Moduls ist die Standardeinstellung Optional
(aus Kompatibilität mit v21). In v23+ des Moduls lautet der Standardwert "Verpflichtend", wodurch für vorhandene Skripts eine bahnbrechende Änderung erstellt werden kann.
Dieser Parameter ist neu in v22 des Moduls.
Typ: | String |
Zulässige Werte: | Mandatory, Optional, Strict |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-FailureConditionLevel
Gibt das automatische Failoververhalten der Verfügbarkeitsgruppe an. Die zulässigen Werte für diesen Parameter sind:
- OnServerDown. Failover oder Neustart, wenn der SQL Server-Dienst beendet wird.
- OnServerUnresponsive. Failover oder Neustart, wenn eine Bedingung niedrigerer Werte erfüllt ist, plus 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, in einem fehlerhaften Zustand ist.
- OnCriticalServerError. Failover oder Neustart, wenn eine Bedingung niedrigeren Werts erfüllt ist, plus wenn ein interner kritischer Serverfehler auftritt, der aus dem Arbeitsspeicher besteht, schwerwiegende Schreibzugriffsverletzung oder zu viel Dumping.
- OnModerateServerError. Failover oder Neustart, wenn eine Bedingung niedrigerer Werte erfüllt ist, plus wenn ein moderater Serverfehler auftritt, der eine persistente Zustand außerhalb des Arbeitsspeichers enthält.
- OnAnyQualifiedFailureConditions. Failover oder Neustart, wenn eine Bedingung mit niedrigerem Wert erfüllt ist, und wenn eine qualifizierende Fehlerbedingung auftritt, einschließlich der Threadausschöpfung des Modul-Workers und der nicht aufgelösten Deadlock erkannt.
Typ: | AvailabilityGroupFailureConditionLevel |
Zulässige Werte: | OnServerDown, OnServerUnresponsive, OnCriticalServerErrors, OnModerateServerErrors, OnAnyQualifiedFailureCondition, Unknown |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-HealthCheckTimeout
Gibt die Zeitdauer in Millisekunden an, nach der Always On-Verfügbarkeitsgruppen einen nicht reagierenden Server als fehlerhafter Server deklarieren.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-HostNameInCertificate
Der Hostname, der beim Überprüfen des SQL Server TLS/SSL-Zertifikats verwendet werden soll. Sie müssen diesen Parameter übergeben, wenn Ihre SQL Server-Instanz für die Erzwingungsverschlüsselung aktiviert ist und Sie eine Verbindung mit einer Instanz mit 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 einer SQL Server-Instanz herzustellen, die für die Erzwingungsverschlüsselung aktiviert ist.
Dieser Parameter ist neu in v22 des Moduls.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-InputObject
Gibt die Instanz von SQL Server an, die das primäre Replikat der Von diesem Cmdlet erstellten Verfügbarkeitsgruppe hosten soll.
Typ: | Server |
Position: | 2 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Name
Gibt den Namen der Verfügbarkeitsgruppe an, die dieses Cmdlet erstellt.
Typ: | String |
Position: | 1 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Path
Gibt den Pfad der Instanz von SQL Server an, die das ursprüngliche primäre Replikat der Von diesem Cmdlet erstellten Verfügbarkeitsgruppe hosten soll. Wenn Sie diesen Parameter nicht angeben, verwendet dieses Cmdlet den aktuellen Arbeitsort. Wenn Sie einen Wert angeben, muss der Pfad zurzeit vorhanden sein.
Typ: | String |
Position: | 2 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ProgressAction
Bestimmt, wie PowerShell auf Statusaktualisierungen reagiert, die von einem Skript, Cmdlet oder Anbieter generiert werden, z. B. auf die Statusanzeigen, die vom Cmdlet Write-Progress generiert werden. Das Cmdlet Write-Progress erstellt Statusanzeigen, die den Status eines Befehls anzeigen.
Typ: | ActionPreference |
Aliase: | proga |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-RequiredSynchronizedSecondariesToCommit
Die Anzahl der synchronen Commit-Secondärdateien, die verfügbar sein müssen, um einen Commit für die primäre Datei ausführen zu können.
Wenn eine sekundäre SYNCHRONOUS_COMMIT
seit einiger Zeit von der primären Getrennt ist, wird sie von der primären zu ASYNCHRONOUS_COMMIT
herabgestuft, um Blockierungs-Commits zu vermeiden. Wenn der Primäre dann nicht verfügbar ist und der Benutzer zu einem dieser Secondaries fehlschlagen möchte, kann es zu Datenverlusten kommen. Durch Festlegen RequiredSynchronizedSecondariesToCommit- auf eine bestimmte Zahl kann der Benutzer den Datenverlust verhindern, da der primäre Start mit dem Blockieren von Commits beginnt, wenn zu viele Secondärdateien auf ASYNCHRONOUS_COMMIT
herabgestuft werden.
Der Standardwert dieser Einstellung ist 0, was bedeutet, dass der primäre Commit nie blockiert wird. Dies ist identisch mit dem Verhalten vor SQL Server 2017.
Typ: | Int32 |
Position: | Named |
Standardwert: | 0 |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ReuseSystemDatabases
Dieser Parameter bewirkt, dass die enthaltenen master
und msdb
Datenbanken aus einer früheren Version der AG bei der Erstellung dieser neuen Verfügbarkeitsgruppe verwendet werden.
Wenn Sie versuchen, diesen Parameter zu verwenden, ohne -ContainedAvailabilityGroup anzugeben nicht zulässig ist, würde das Cmdlet einen Fehler auslösen.
Dieser Parameter ist nur in Version 22+ des Moduls verfügbar.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Script
Gibt an, dass dieses Cmdlet ein Transact-SQL Skript zurückgibt, das die aufgabe ausführt, die dieses Cmdlet ausführt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-TrustServerCertificate
Gibt an, ob der Kanal verschlüsselt wird, während die Zertifikatkette umgangen wird, um die Vertrauensstellung zu überprüfen.
In v22 des Moduls ist die Standardeinstellung $true
(aus Kompatibilität mit v21). In v23+ des Moduls lautet der Standardwert "$false", wodurch möglicherweise eine änderung für vorhandene Skripts geändert wird.
Dieser Parameter ist neu in v22 des Moduls.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Typ: | SwitchParameter |
Aliase: | wi |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Microsoft.SqlServer.Management.Smo.Server
Sie können eine Serverinstanz an dieses Cmdlet übergeben.
Ausgaben
Microsoft.SqlServer.Management.Smo.AvailabilityGroup
Dieses Cmdlet gibt eine Verfügbarkeitsgruppe zurück.