Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel beschreibt, wie man Azure PowerShell verwendet, um Streaming-Backups für SQL Server-Datenbanken und Snapshot-Backups für SQL Server-Instanzen in Azure-VMs zu konfigurieren. Für Wiederherstellungs- und Verwaltungsvorgänge siehe Wiederherstellen und Verwalten.
Prerequisites
- Installiere das neueste Azure PowerShell-Modul, einschließlich Az.RecoveryServices. Snapshot-Beispiele erfordern eine Modulversion, die
MSSQLInstancesowie die in diesem Artikel gezeigten Snapshot-Parameter freilegt. - Überprüfen Sie die SQL Server-Backup-Voraussetzungen und die Unterstützungsmatrix.
- Für den Schutz von Snapshots prüfen Sie die Anforderungen an Instance-Snapshots. Bereiten Sie die Snapshot-Ressourcengruppe und die vom Benutzer zugewiesene verwaltete Identität mit den erforderlichen Berechtigungen vor.
- Ersetzen Sie die Werte in spitzen Klammern durch die Werte für Ihre Umgebung. Beispiele verwenden
-VaultIdstatt eines sitzungsweiten Vault-Kontexts.
Anmelden und Auswählen eines Tresors
Melden Sie sich interaktiv an und wählen Sie das Abonnement aus, das den Schlüsseltresor enthält:
Connect-AzAccount
Select-AzSubscription -SubscriptionId "<vault-subscription-id>"
Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
Überprüfen Sie, ob der Registrierungsstatus des Anbieters Registered ist. Wenn du einen neuen Vault brauchst, erstelle eine Ressourcengruppe und einen Vault in der benötigten Region:
New-AzResourceGroup -Name "<vault-rg>" -Location "<region>"
New-AzRecoveryServicesVault -Name "<vault-name>" `
-ResourceGroupName "<vault-rg>" -Location "<region>"
Rufen Sie das Vault-Objekt ab. Richte die Speicherredundanz für einen neuen Recovery Services-Tresor ein, bevor du irgendwelche Elemente schützt:
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "<vault-rg>" -Name "<vault-name>"
Set-AzRecoveryServicesBackupProperty -Vault $vault -BackupStorageRedundancy GeoRedundant
Für einen bestehenden Tresor sollte man ihn abrufen $vault, ohne die Speicherkonfiguration zu ändern. Du kannst Vaults mit Get-AzRecoveryServicesVault auflisten.
Streaming-Datenbank-Backup konfigurieren
Erstellen Sie eine Streaming-Richtlinie
Verwenden Sie Get-AzRecoveryServicesBackupSchedulePolicyObject und Get-AzRecoveryServicesBackupRetentionPolicyObject, um die Standard-Schedule- und Retention-Objekte zu erhalten. Überprüfen Sie sie, bevor Sie die Richtlinie erstellen:
$schedule = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType MSSQL
$retention = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType MSSQL
$schedule.FullBackupSchedulePolicy.ScheduleRunTimes[0] = `
(Get-Date -Date "2026-10-19T01:30:00Z").ToUniversalTime()
$policy = New-AzRecoveryServicesBackupProtectionPolicy -Name "Sql-Streaming" `
-WorkloadType MSSQL -SchedulePolicy $schedule -RetentionPolicy $retention `
-VaultId $vault.ID
Die geplanten Startzeiten müssen in UTC und in 30-Minuten-Intervallen liegen, wie etwa 01:00 oder 01:30.
Registrieren Sie die VM und entdecken Sie Datenbanken
Registrieren Sie die VM, die den SQL Server hostet, im Recovery Services-Tresor:
$vm = Get-AzVM -ResourceGroupName "<vm-rg>" -Name "<vm-name>"
Register-AzRecoveryServicesBackupContainer -ResourceId $vm.ID `
-BackupManagementType AzureWorkload -WorkloadType MSSQL -VaultId $vault.ID
Liste die verfügbaren SQL-Komponenten auf und wähle dann eine Datenbank mit ihrem Namen und Server aus:
Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL -VaultId $vault.ID
$database = Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL `
-ItemType SQLDataBase -Name "<database-name>" -ServerName "<vm-name>" `
-VaultId $vault.ID
Verwenden Sie die zurückgegebenen Namen, um die gewünschte Datenbank zu identifizieren. Aktivieren Sie den Schutz durch die Streaming-Richtlinie:
Enable-AzRecoveryServicesBackupProtection -ProtectableItem $database `
-Policy $policy -VaultId $vault.ID
Entdecke neu hinzugefügte Datenbanken
Wenn Sie Datenbanken oder Instanzen nach der VM-Registrierung hinzufügen, aktualisieren Sie die Discovery:
$container = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer `
-BackupManagementType AzureWorkload -FriendlyName "<vm-name>" -VaultId $vault.ID
Initialize-AzRecoveryServicesBackupProtectableItem -Container $container `
-WorkloadType MSSQL -VaultId $vault.ID
Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL `
-ItemType SQLDataBase -VaultId $vault.ID
Autoschutz für zukünftige Datenbanken aktivieren
Um den Streaming-Schutz zu nutzen, aktivieren Sie die Autoprotektion auf SQL-Instanzebene. Die Erkennung neu hinzugefügter Datenbanken läuft alle acht Stunden als Hintergrundaufgabe:
$instance = Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL `
-ItemType SQLInstance -Name "<instance-name>" -ServerName "<vm-name>" `
-VaultId $vault.ID
Enable-AzRecoveryServicesBackupAutoProtection -InputItem $instance `
-BackupManagementType AzureWorkload -WorkloadType MSSQL `
-Policy $policy -VaultId $vault.ID
Für SQL Always On-Verfügbarkeitsgruppen registrieren Sie alle Knoten, bevor Sie die Datenbanken der Verfügbarkeitsgruppen auswählen. Weitere Informationen finden Sie unter Verfügbarkeitsgruppen für SQL Server sichern.
SQL-Instanz-Snapshot-Backup konfigurieren
Erstellen Sie eine Snapshot-Richtlinie mit Log-Backups
Verwenden Sie MSSQLInstance für Snapshot-Planungs- und Retentionsobjekte. Das Schedule-Objekt hat standardmäßig Log-Backups aktiviert.
$snapshotSchedule = Get-AzRecoveryServicesBackupSchedulePolicyObject `
-WorkloadType MSSQLInstance -BackupManagementType AzureWorkload
$snapshotRetention = Get-AzRecoveryServicesBackupRetentionPolicyObject `
-WorkloadType MSSQLInstance -BackupManagementType AzureWorkload
$identityId = "/subscriptions/<subscription-id>/resourceGroups/<identity-rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>"
$snapshotPolicy = New-AzRecoveryServicesBackupProtectionPolicy -Name "SqlInst-SnapLog" `
-WorkloadType MSSQLInstance -SchedulePolicy $snapshotSchedule `
-RetentionPolicy $snapshotRetention -BackupSnapshotResourceGroup "<snapshot-rg>" `
-InstantRPRetentionRangeInDays 5 -UserAssignedIdentityId $identityId `
-VaultId $vault.ID
Die daraus resultierende Richtlinie umfasst SnapshotFull und Log Unterrichtlinien.
Erstellen Sie eine Nur-Snapshot-Richtlinie
Um Log-Backups wegzulassen, setze IsLogBackupEnabled im Schedule-Objekt auf $false. Das Retentionsobjekt besitzt diese Eigenschaft nicht.
$snapshotOnlySchedule = Get-AzRecoveryServicesBackupSchedulePolicyObject `
-WorkloadType MSSQLInstance -BackupManagementType AzureWorkload
$snapshotOnlyRetention = Get-AzRecoveryServicesBackupRetentionPolicyObject `
-WorkloadType MSSQLInstance -BackupManagementType AzureWorkload
$snapshotOnlySchedule.IsLogBackupEnabled = $false
$snapshotOnlyPolicy = New-AzRecoveryServicesBackupProtectionPolicy -Name "SqlInst-SnapOnly" `
-WorkloadType MSSQLInstance -SchedulePolicy $snapshotOnlySchedule `
-RetentionPolicy $snapshotOnlyRetention -BackupSnapshotResourceGroup "<snapshot-rg>" `
-InstantRPRetentionRangeInDays 5 -UserAssignedIdentityId $identityId `
-VaultId $vault.ID
Die daraus resultierende Richtlinie umfasst nur die SnapshotFull Unterrichtlinie. Snapshot-only-Schutz bietet keine log-basierte Punkt-in-Zeit-Wiederherstellung.
Registrieren Sie die VM für den Instanzschutz
Registrieren Sie die VM mit MSSQLInstance. Für eine VM in einem anderen Abonnement verwenden Sie deren vollständige Ressourcen-ID.
-ContainerSubscriptionId ist optional.
Register-AzRecoveryServicesBackupContainer `
-ResourceId "/subscriptions/<vm-subscription-id>/resourceGroups/<vm-rg>/providers/Microsoft.Compute/virtualMachines/<vm-name>" `
-BackupManagementType AzureWorkload -WorkloadType MSSQLInstance `
-ContainerSubscriptionId "<vm-subscription-id>" -VaultId $vault.ID
Wählen Sie eine Instanz aus und aktivieren Sie den Schutz
Discovery verwendet MSSQL immer noch mit SQLInstance als Elementtyp. Rufen Sie die Snapshot-Policy nach Namen ab und geben Sie dann die ausgewählten Benutzerdatenbanken an.
$instance = Get-AzRecoveryServicesBackupProtectableItem -WorkloadType MSSQL `
-ItemType SQLInstance -Name "<instance-name>" -ServerName "<vm-name>" `
-VaultId $vault.ID
$snapshotPolicy = Get-AzRecoveryServicesBackupProtectionPolicy `
-Name "SqlInst-SnapLog" -VaultId $vault.ID
Enable-AzRecoveryServicesBackupProtection -ProtectableItem $instance `
-Policy $snapshotPolicy -ChildDatabaseName @("Testdb1", "Testdb2", "Testdb4") `
-VaultId $vault.ID
Wählen Sie bis zu 12 Benutzerdatenbanken aus. Systemdatenbank-Snapshots werden nicht unterstützt. Um mehr über andere Limits zu erfahren, sehen Sie sich die Snapshot-Unterstützungsmatrix an.
Auslösen einer bedarfsgesteuerten Sicherung
Streaming-Datenbank-Backup
Beschränken Sie die Backup-Item-Suche auf den Container der VM. Dieses Beispiel verlangt ein vollständiges Backup als Nur-Kopie mit Kompression und 60-tägigem Ablaufdatum:
$container = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer `
-BackupManagementType AzureWorkload -FriendlyName "<vm-name>" -VaultId $vault.ID
$databaseItem = Get-AzRecoveryServicesBackupItem -Container $container `
-WorkloadType MSSQL -Name "SQLDataBase;<instance-name>;<database-name>" `
-VaultId $vault.ID
$expiry = (Get-Date).AddDays(60).ToUniversalTime()
Backup-AzRecoveryServicesBackupItem -Item $databaseItem -BackupType CopyOnlyFull `
-EnableCompression -ExpiryDateTimeUTC $expiry -VaultId $vault.ID
Für vollständige Nur-Kopie-Backups gilt das angeforderte Ablaufdatum. Die Aufbewahrung von Streaming-Vollsicherungen ist an die abhängigen Log-Backups gebunden; siehe Aufbewahrung von On-Demand-Backups.
Instance-Snapshot-Backup
Verwenden Sie MSSQLInstance , um eine geschützte Instanz abzurufen, und fordern Sie dann ein SnapshotFull Backup an:
$container = Get-AzRecoveryServicesBackupContainer -ContainerType AzureVMAppContainer `
-BackupManagementType AzureWorkload -FriendlyName "<vm-name>" -VaultId $vault.ID
$instanceItem = Get-AzRecoveryServicesBackupItem -Container $container `
-WorkloadType MSSQLInstance -Name "sqlinstance;<instance-name>" -VaultId $vault.ID
$expiry = (Get-Date).AddDays(45).ToUniversalTime()
Backup-AzRecoveryServicesBackupItem -Item $instanceItem -BackupType SnapshotFull `
-ExpiryDateTimeUTC $expiry -VaultId $vault.ID
Der Backup-Befehl gibt einen Job zurück. Für Ablaufverfolgungsbefehle siehe Aufträge überwachen.