Informationen zur SQL Server-Sicherung auf virtuellen Azure-Computern

Azure Backup bietet eine streambasierte, spezialisierte Lösung zum Sichern von SQL Server-Instanzen, die auf Azure-VMs ausgeführt werden. Diese Lösung ist an den Vorteilen von Azure Backup ausgerichtet: Sicherungen ohne Infrastruktur, langfristige Speicherung und zentrale Verwaltung. Außerdem bietet sie die folgenden Vorteile speziell für SQL Server:

  • Workloadabhängige Sicherungen, die alle Sicherungstypen unterstützen: vollständige, differenzielle und Protokollsicherungen
  • RPO (Recovery Point Objective) von 15 Minuten mit häufigen Protokollsicherungen
  • Zeitpunktwiederherstellung von bis zu einer Sekunde
  • Sicherung und Wiederherstellung einzelner Datenbankebenen

Informationen zu den derzeit von uns unterstützten Sicherungs- und Wiederherstellungsszenarien finden Sie in der Support-Matrix.

Sicherungsprozess

Die Lösung nutzt die nativen SQL-APIs, um Sicherungen Ihrer SQL-Datenbankinstanzen zu erstellen.

  • Nachdem Sie die SQL Server-VM angegeben haben, die Sie schützen und deren Datenbanken Sie abfragen möchten, installiert der Azure Backup-Dienst eine Erweiterung zur Workloadsicherung mit dem Namen AzureBackupWindowsWorkload auf dem virtuellen Computer.

  • Diese Erweiterung besteht aus einem Koordinator und einem SQL-Plug-In. Während der Koordinator für das Auslösen von Workflows für verschiedene Vorgänge wie Konfigurieren der Sicherung, Sicherung und Wiederherstellung zuständig ist, ist das Plug-In für den tatsächlichen Datenfluss verantwortlich.

  • Um die Datenbanken auf diesem virtuellen Computer ermitteln zu können, erstellt Azure Backup das Konto NT SERVICE\AzureWLBackupPluginSvc. Dieses Konto wird zum Sichern und Wiederherstellen verwendet und erfordert SQL-Systemadministratorberechtigungen. Weil es sich beim Konto NT SERVICE\AzureWLBackupPluginSvc um ein virtuelles Dienstkonto handelt, ist keine Kennwortverwaltung erforderlich. Azure Backup verwendet das Konto NT AUTHORITY\SYSTEM für die Ermittlung von und Anfragen an Datenbanken. Für dieses Konto muss es also eine öffentliche Anmeldung in SQL geben. Wenn Sie den virtuellen SQL Server-Computer nicht über Azure Marketplace erstellt haben, erhalten Sie möglicherweise den Fehler UserErrorSQLNoSysadminMembership. Gehen Sie in diesem Fall wie folgt vor:

  • Sobald Sie die Konfiguration des Schutzes der ausgewählten Datenbanken auslösen, richtet der Sicherungsdienst den Koordinator mit den Sicherungszeitplänen und anderen Richtliniendetails ein, die die Erweiterung lokal auf dem virtuellen Computer zwischenspeichert.

  • Zum geplanten Zeitpunkt kommuniziert der Koordinator mit dem Plug-In, und es startet das Streaming der Sicherungsdaten von der SQL Server-Instanz mit VDI.

  • Weil das Plug-In die Daten direkt an den Recovery Services-Tresor sendet, ist kein Stagingspeicherort erforderlich. Die Daten werden verschlüsselt und vom Azure Backup-Dienst in Speicherkonten gespeichert.

  • Wenn die Datenübertragung abgeschlossen ist, bestätigt der Koordinator den Commit mit dem Sicherungsdienst.

    Die Architektur von SQL Backup

Vorbereitung

Überprüfen Sie zunächst die folgenden Anforderungen:

  1. Vergewissern Sie sich, dass in Azure eine SQL Server-Instanz ausgeführt wird. Im Marketplace können Sie schnell eine SQL Server-Instanz erstellen.
  2. Informieren Sie sich über Funktionsaspekte und Unterstützung von Szenarien.
  3. Lesen Sie häufig gestellte Fragen zu diesem Szenario.

Einrichten von Berechtigungen für virtuelle Computer

Wenn Sie die Ermittlung in einer SQL Server-Instanz ausführen, führt Azure Backup Folgendes aus:

  • Fügt die Erweiterung AzureBackupWindowsWorkload hinzu.
  • Erstellt das Konto „NT SERVICE\AzureWLBackupPluginSvc“, um Datenbanken auf dem virtuellen Computer zu ermitteln. Dieses Konto wird zum Sichern und Wiederherstellen verwendet und erfordert Systemadministratorberechtigungen für SQL Server.
  • Ermittelt auf einer VM ausgeführte Datenbanken. Azure Backup verwendet das Konto NT AUTHORITY\SYSTEM. Dieses Konto muss eine öffentliche Anmeldung in SQL Server ermöglichen.

Wenn Sie die SQL Server-VM nicht in Azure Marketplace erstellt haben oder wenn Sie mit SQL Server 2008 oder 2008 R2 arbeiten, erhalten Sie möglicherweise die Fehlermeldung UserErrorSQLNoSysadminMembership.

Informationen zur Erteilung von Berechtigungen bei Ausführung von SQL 2008 und 2008 R2 unter Windows 2008 R2 finden Sie hier.

Korrigieren Sie bei allen anderen Versionen die Berechtigungen wie folgt:

  1. Verwenden Sie ein Konto mit SQL Server-Systemadministratorberechtigungen, um sich bei SQL Server Management Studio (SSMS) anzumelden. Wenn Sie keine speziellen Berechtigungen benötigen, sollte die Windows-Authentifizierung funktionieren.

  2. Öffnen Sie auf der SQL Server-Instanz den Ordner Sicherheit/Anmeldungen.

    Öffnen von Ordner „Sicherheit/Anmeldungen“, um Konten anzuzeigen

  3. Klicken Sie mit der rechten Maustaste auf den Ordner Anmeldungen, und wählen Sie Neue Anmeldung aus. Wählen Sie in Anmeldung – Neu die Option Suche aus.

    Auswählen von „Suchen“ im Dialogfeld „Anmeldung – Neu“

  4. Das virtuelle Windows-Dienstkonto NT SERVICE\AzureWLBackupPluginSvc wurde bei der Registrierung des virtuellen Computers und der SQL-Ermittlungsphase erstellt. Geben Sie den Kontonamen ein, wie in Namen des auszuwählenden Objekts eingeben dargestellt. Wählen Sie Namen überprüfen aus, um den Namen aufzulösen. Klicken Sie auf OK.

    Klicken auf „Namen überprüfen“, um den unbekannten Dienstnamen aufzulösen

  5. Stellen Sie in Serverrollen sicher, dass die Rolle sysadmin ausgewählt ist. Klicken Sie auf OK. Die erforderlichen Berechtigungen sollten jetzt vorhanden sein.

    Sicherstellen, dass die Serverrolle „Sysadmin“ ausgewählt ist

  6. Ordnen Sie nun die Datenbank dem Recovery Services-Tresor zu. Klicken Sie im Azure-Portal in der Liste Geschützte Server mit der rechten Maustaste auf den fehlerhaften Server, und wählen Sie Datenbanken neu ermitteln aus.

    Überprüfen der entsprechenden Serverberechtigungen

  7. Der Fortschritt kann im Bereich Benachrichtigungen verfolgt werden. Wenn die ausgewählten Datenbanken gefunden wurden, wird eine Erfolgsmeldung angezeigt.

    Meldung über erfolgreiche Bereitstellung

Hinweis

Sind auf Ihrem SQL-Server mehrere Instanzen von SQL Server installiert, müssen Sie allen SQL-Instanzen Systemadministratorberechtigungen für das Konto NT Service\AzureWLBackupPluginSvc hinzufügen.

Erteilen der SQL Server-Berechtigung „sysadmin“ für SQL 2008 und SQL 2008 R2

Fügen Sie der SQL Server-Instanz die Anmeldungen NT AUTHORITY\SYSTEM und NT Service\AzureWLBackupPluginSvc hinzu:

  1. Wechseln Sie im Objekt-Explorer zur SQL Server-Instanz.

  2. Navigieren Sie zu „Sicherheit“ –> „Anmeldungen“.

  3. Klicken Sie mit der rechten Maustaste auf „Anmeldungen“, und wählen Sie Neue Anmeldung aus.

    Neue Anmeldung mit SSMS

  4. Wechseln Sie zur Registerkarte „Allgemein“, und geben Sie NT AUTHORITY\SYSTEM als Anmelde-ID ein.

    Anmelde-ID für SSMS

  5. Wechseln Sie zu Serverrollen, und wählen Sie die Rollen Öffentlich und sysadmin aus.

    Auswählen von Rollen in SSMS

  6. Wechseln Sie zu Status. Erteilen Sie die Berechtigung zum Herstellen der Verbindung mit der Datenbank-Engine, und melden Sie sich als Aktiviert an.

    Erteilen von Berechtigungen in SSMS

  7. Wählen Sie „OK“ aus.

  8. Wiederholen Sie die gleiche Schrittreihenfolge (1-7 oben), um die Anmeldung „NT Service\AzureWLBackupPluginSvc“ zur SQL Server-Instanz hinzuzufügen. Wenn die Anmeldung bereits vorhanden ist, stellen Sie sicher, dass sie die Serverrolle „sysadmin“ hat und ihr unter „Status“ die Berechtigung zum Herstellen der Verbindung mit der Datenbank-Engine erteilt und „Anmeldung“ auf „Aktiviert“ festgelegt wurde.

  9. Nach dem Erteilen der Berechtigung können Sie im Portal DBs neu ermitteln: -> Verwalten -> Sicherungsinfrastruktur -> Workload in Azure-VM:

    Erneutes Ermitteln von Datenbanken im Azure-Portal

Alternativ können Sie die Erteilung der Berechtigungen automatisieren, indem Sie die folgenden PowerShell-Befehle im Administratormodus ausführen. Der Instanzname ist standardmäßig auf MSSQLSERVER festgelegt. Ändern Sie nötigenfalls das Argument mit dem Namen der Instanz im Skript.

param(
    [Parameter(Mandatory=$false)]
    [string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
    $fullInstance = $env:COMPUTERNAME   # In case it is the default SQL Server Instance
}
else
{
    $fullInstance = $env:COMPUTERNAME + "\" + $InstanceName   # In case of named instance
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}

Konfigurieren gleichzeitiger Sicherungen

Sie können jetzt Sicherungen so konfigurieren, dass die SQL Server-Wiederherstellungspunkte und -Protokolle gleichzeitig in einem lokalen Speicher und einem Recovery Services-Tresor gespeichert werden.

Befolgen Sie zum Konfigurieren gleichzeitiger Sicherungen die folgenden Schritte:

  1. Wechseln Sie zum Speicherort C:\Program Files\Azure Workload Backup\bin\plugins, und erstellen Sie dann die Datei PluginConfigSettings.json, wenn sie nicht vorhanden ist.

  2. Fügen Sie der JSON-Datei die durch Trennzeichen getrennten Schlüssel-Wert-Entitäten mit den Schlüsseln EnableLocalDiskBackupForBackupTypes und LocalDiskBackupFolderPath hinzu.

    • Listen Sie unter EnableLocalDiskBackupForBackupTypes die Sicherungstypen auf, die Sie lokal speichern möchten.

      Wenn Sie z. B. die vollständigen Sicherungen und die Protokollsicherungen speichern möchten, geben Sie ["Full", "Log"] an. Um nur die Protokollsicherungen zu speichern, geben Sie ["Log"] an.

    • Geben Sie unter LocalDiskBackupFolderPath den Pfad zum lokalen Ordner ein. Verwenden Sie den doppelten vorwärts gerichteten Schrägstrich zur Angabe des Pfads in der JSON-Datei.

      Wenn beispielsweise der bevorzugte Pfad für die lokale Sicherung E:\LocalBackup lautet, geben Sie den Pfad im JSON-Code als E:\\LocalBackup an.

      Der endgültige JSON-Code sollte wie folgt aussehen:

      {
         "EnableLocalDiskBackupForBackupTypes": ["Log"],
         "LocalDiskBackupFolderPath": "E:\\LocalBackup",
      }
      

      Wenn in der JSON-Datei andere vorab ausgefüllte Einträge vorhanden sind, fügen Sie die beiden obigen Einträge am Ende der JSON-Datei kurz vor der schließenden geschweiften Klammer hinzu.

  3. Damit die Änderungen sofort und nicht erst wie üblich nach einer Stunde wirksam werden, wechseln Sie zu Task-Manager>Dienste, klicken Sie mit der rechten Maustaste auf AzureWLbackupPluginSvc, und wählen Sie Anhalten aus.

    Achtung

    Durch diese Aktion werden alle laufenden Sicherungsaufträge abgebrochen.

    Die Namenskonvention der gespeicherten Sicherungsdatei und der zugehörigen Ordnerstruktur lautet {LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}.

    Wenn Sie beispielsweise über eine Datenbank Contoso unter der SQL-Instanz MSSQLSERVER verfügen, befinden sich die Dateien unter E:\LocalBackup\MSSQLSERVER\Contoso.

    Der Name der Datei entspricht der VDI device set guid, die für den Sicherungsvorgang verwendet wird.

  4. Überprüfen Sie, ob der Zielspeicherort unter LocalDiskBackupFolderPath für NT Service\AzureWLBackupPluginSvc über Berechtigungen zum Lesen und Schreiben verfügt.

    Hinweis

    Klicken Sie für einen Ordner auf den lokalen VM-Datenträgern mit der rechten Maustaste auf den Ordner, und konfigurieren Sie die erforderlichen Berechtigungen für NT Service\AzureWLBackupPluginSvc auf der Registerkarte Sicherheit.

    Wenn Sie eine Netzwerk- oder SMB-Freigabe verwenden, konfigurieren Sie die Berechtigungen, indem Sie die folgenden PowerShell-Cmdlets über eine Benutzerkonsole ausführen, die bereits über die Berechtigung für den Zugriff auf die Freigabe verfügt:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath <FileSharePath> -Credential $cred -LocalPath <LocalDrive>:  -FullAccess @("<Comma Separated list of accounts>") -Persistent $true
    

    Beispiel:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath \\i00601p1imsa01.file.core.windows.net\rsvshare -Credential $cred -LocalPath Y:  -FullAccess @("NT AUTHORITY\SYSTEM","NT Service\AzureWLBackupPluginSvc") -Persistent $true
    

Nächste Schritte