Teilen über


Sichern und Wiederherstellen von Datenbanken in Azure SQL Edge

Wichtig

Azure SQL Edge unterstützt die ARM64-Plattform nicht mehr.

Azure SQL Edge basiert auf der neuesten Version der Microsoft SQL Server-Datenbank-Engine. Es bietet ähnliche Sicherungs- und Wiederherstellungsdatenbankfunktionen wie SQL Server für Linux und SQL Server, die in Containern ausgeführt werden. Mit der Sicherungs- und Wiederherstellungskomponente wird eine wichtige Vorkehrung zum Schutz von in Azure SQL Edge-Datenbanken gespeicherten Daten bereitgestellt.

Um das Risiko eines katastrophalen Datenverlusts zu minimieren, sollten Sie Ihre Datenbanken regelmäßig sichern, um Änderungen an Ihren Daten regelmäßig beizubehalten. Eine gut geplante Sicherungs- und Wiederherstellungsstrategie trägt zum Schutz von Datenbanken vor Datenverlust bei, die durch verschiedene Fehler verursacht werden. Testen Sie Ihre Strategie, indem Sie einen Sicherungssatz und anschließend Ihre Datenbank wiederherstellen, um sich auf die effektive Reaktion auf einen Notfall vorzubereiten.

Weitere Informationen dazu, warum Sicherungen wichtig sind, finden Sie unter Sichern und Wiederherstellen von SQL Server-Datenbanken.

Azure SQL Edge ermöglicht die Sicherung in und Wiederherstellung aus lokalem Speicher und Azure-Blobs. Weitere Informationen finden Sie unter Sicherung und Wiederherstellung von SQL Server mit Azure Blob Storage und SQL Server-Sicherung über URLs.

Sichern einer Datenbank in Azure SQL Edge

Azure SQL Edge unterstützt die gleichen Sicherungstypen wie SQL Server. Eine vollständige Liste finden Sie in der Übersicht für die Sicherung.

Wichtig

In Azure SQL Edge erstellte Datenbanken verwenden standardmäßig das einfache Wiederherstellungsmodell. Daher können für diese Datenbanken keine Protokollsicherungen erfolgen. Wenn dies erforderlich sein sollte, muss ein Administrator das Modell für die Datenbankwiederherstellung in das vollständige Wiederherstellungsmodell ändern. Eine vollständige Liste der von SQL Server unterstützten Wiederherstellungsmodelle finden Sie in der Übersicht über das Wiederherstellungsmodell.

Sichern auf lokalem Datenträger

Im folgenden Beispiel erstellen Sie mit dem Transact-SQL-Befehl BACKUP DATABASE eine Datenbanksicherung im Container. In diesem Beispiel erstellen Sie einen neuen Ordner namens "Sicherung ", um die Sicherungsdateien zu speichern.

  1. Erstellen Sie einen Ordner für die Sicherungen. Führen Sie diesen Befehl auf dem Host aus, auf dem sich der Azure SQL Edge-Container befindet. Ersetzen Sie im folgenden Befehl < durch den Namen des Azure SQL Edge-Containers in Ihrer Bereitstellung.

    sudo docker exec -it <AzureSQLEdge_Container_Name> mkdir /var/opt/mssql/backup
    
  2. Stellen Sie mithilfe von SQL Server Management Studio (SSMS) oder Azure Data Studio eine Verbindung mit der Azure SQL Edge-Instanz her. Führen Sie den Befehl BACKUP DATABASE aus, um die Sicherung der Benutzerdatenbank zu erstellen. Im folgenden Beispiel erstellen Sie die Sicherung der IronOreSilicaPrediction Datenbank.

    BACKUP DATABASE [IronOreSilicaPrediction] TO DISK = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    WITH NOFORMAT,
        NOINIT,
        NAME = N'IronOreSilicaPrediction-Full Database Backup',
        SKIP,
        NOREWIND,
        NOUNLOAD,
        COMPRESSION,
        STATS = 10;
    GO
    
  3. Nachdem Sie den Befehl ausgeführt haben und die Sicherung der Datenbank erfolgreich war, werden im Abschnitt „Ergebnisse“ von SQL Server Management Studio oder Azure Data Studio Meldungen ähnlich den folgenden angezeigt.

    10 percent processed.
    20 percent processed.
    30 percent processed.
    40 percent processed.
    50 percent processed.
    60 percent processed.
    70 percent processed.
    80 percent processed.
    90 percent processed.
    100 percent processed.
    Processed 51648 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction' on file 1.
    Processed 2 pages for database 'IronOreSilicaPrediction', file 'IronOreSilicaPrediction_log' on file 1.
    BACKUP DATABASE successfully processed 51650 pages in 3.588 seconds (112.461 MB/sec).
    
    Completion time: 2020-04-09T23:54:48.4957691-07:00
    

Auf URL sichern

Azure SQL Edge unterstützt Sicherungen in Seitenblobs und in Blockblobs. Weitere Informationen finden Sie unter Sicherung: Blockblobs vs. Seitenblobs. Im folgenden Beispiel wird die Datenbank IronOreSilicaPrediction in einem Block-BLOB gesichert.

  1. Um Sicherungen in Blockblobs zu konfigurieren, generieren Sie zuerst ein SAS-Token (Shared Access Signature), mit dem SQL Server-Anmeldeinformationen für Azure SQL Edge erstellt werden können. Das Skript erstellt eine SAS, die einer gespeicherten Zugriffsrichtlinie zugeordnet ist. Weitere Informationen finden Sie unter Freigegebene Zugriffssignaturen, Teil 1: Grundlegendes zum SAS-Modell. Das Skript schreibt auch den T-SQL-Befehl, der zum Erstellen der Anmeldeinformationen unter SQL Server erforderlich ist. Im folgenden Skript wird davon ausgegangen, dass Sie bereits über ein Azure-Abonnement mit einem Speicherkonto und einen Speichercontainer für die Sicherungen verfügen.

    # Define global variables for the script
    $subscriptionName='<your subscription name>'   # the name of subscription name you will use
    $resourcegroupName = '<your resource group name>' # the name of resource group you will use
    $storageAccountName= '<your storage account name>' # the storage account name you will use for backups
    $containerName= '<your storage container name>'  # the storage container name to which you will attach the SAS policy with its SAS token
    $policyName = 'SASPolicy' # the name of the SAS policy
    
    # adds an authenticated Azure account for use in the session
    Login-AzAccount
    
    # set the tenant, subscription and environment for use in the rest of
    Select-AzSubscription -Subscription $subscriptionName
    
    # Generate the SAS token
    $sa = Get-AzStorageAccount -ResourceGroupName $resourcegroupName -Name $storageAccountName
    $storagekey = Get-AzStorageAccountKey -ResourceGroupName $resourcegroupName -Name $storageAccountName
    $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storagekey[0].Value
    $cbc = Get-AzStorageContainer -Name $containerName -Context $storageContext
    $policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission "rwld"
    $sas = New-AzStorageContainerSASToken -Policy $policyName -Context $storageContext -Container $containerName
    Write-Host 'Shared Access Signature= '$($sas.Substring(1))''
    
    # Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature
    Write-Host 'Credential T-SQL'
    $tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='Shared Access Signature', SECRET='{1}'" -f $cbc.CloudBlobContainer.Uri.AbsoluteUri,$sas.Substring(1)
    $tSql | clip
    Write-Host $tSql
    

    Nachdem das Skript erfolgreich ausgeführt wurde, kopieren Sie den Befehl CREATE CREDENTIAL in ein Abfragetool. Stellen Sie dann eine Verbindung mit einer Instanz von SQL Server her, und führen Sie den Befehl zur Erstellung der Anmeldeinformationen mit der SAS aus.

  2. Stellen Sie mithilfe von SQL Server Management Studio oder Azure Data Studio eine Verbindung mit der Azure SQL Edge-Instanz her, und erstellen Sie die Anmeldeinformationen dann mithilfe des Befehls im vorherigen Schritt. Stellen Sie sicher, dass Sie den Befehl CREATE CREDENTIAL durch die tatsächliche Ausgabe im vorherigen Schritt ersetzen.

    IF NOT EXISTS
    (SELECT * FROM sys.credentials
    WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>')
    CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>]
       WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
       SECRET = '<SAS_TOKEN>';
    
  3. Der folgende Befehl übernimmt eine Sicherung des IronOreSilicaPrediction Azure-Speichercontainers.

    BACKUP DATABASE IronOreSilicaPrediction
    TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/IronOreSilicaPrediction.bak'
    With MAXTRANSFERSIZE = 4194304,BLOCKSIZE=65536;
    GO
    

Wiederherstellen einer Datenbank in Azure SQL Edge

In Azure SQL Edge kann eine Wiederherstellung mithilfe eines lokalen Datenträgers, Netzwerkspeicherorts oder Azure Blob Storage-Kontos erfolgen. Weitere Informationen zur Wiederherstellung finden Sie in der Übersicht über die Wiederherstellung. Eine Übersicht über das einfache Wiederherstellungsmodell in SQL Server finden Sie unter Vollständige Datenbankwiederherstellungen (einfaches Wiederherstellungsmodell).

Wichtig

Datenbanken, die in Azure SQL Edge erstellt wurden, können nicht in einer Instanz von Microsoft SQL Server oder Azure SQL wiederhergestellt werden. Darüber hinaus kann eine datenbank, die auf Microsoft SQL Server oder Azure SQL erstellt wurde, auf Azure SQL Edge wiederhergestellt werden, vorausgesetzt, die Datenbank enthält keine der Features, die von Azure SQL Edge nicht unterstützt werden.

Wiederherstellen von einem lokalem Datenträger

In diesem Beispiel wird die IronOreSilicaPrediction Sicherung verwendet, die Sie im vorherigen Beispiel erstellt haben. Sie stellen sie nun als neue Datenbank mit einem anderen Namen wieder her.

  1. Wenn die Datenbanksicherungsdatei nicht bereits im Container vorhanden ist, können Sie die Datei mit dem folgenden Befehl in den Container kopieren. Im folgenden Beispiel wird davon ausgegangen, dass die Sicherungsdatei auf dem lokalen Host vorhanden ist und in den Ordner „/var/opt/mssqlbBackup“ in einem Azure SQL Edge-Container mit dem Namen sql1 kopiert wird.

    sudo docker cp IronOrePredictDB.bak sql1:/var/opt/mssql/backup
    
  2. Stellen Sie mithilfe von SQL Server Management Studio oder Azure Data Studio eine Verbindung mit der Azure SQL Edge-Instanz her, um den Wiederherstellungsbefehl auszuführen. Im folgenden Beispiel wird wiederhergestellt, IronOrePredictDB.bak um eine neue Datenbank zu erstellen, IronOreSilicaPrediction_2.

    Restore FilelistOnly from disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    
    Restore Database IronOreSilicaPrediction_2
    From disk = N'/var/opt/mssql/backup/IronOrePredictDB.bak'
    WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.mdf',
    MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_2.ldf';
    
  3. Nach Ausführung des Wiederherstellungsbefehls wird bei erfolgreichem Wiederherstellungsvorgang im Ausgabefenster eine Meldung ähnlich der folgenden angezeigt.

    Processed 51648 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction' on file 1.
    Processed 2 pages for database 'IronOreSilicaPrediction_2', file 'IronOreSilicaPrediction_log' on file 1.
    RESTORE DATABASE successfully processed 51650 pages in 6.543 seconds (61.670 MB/sec).
    
    Completion time: 2020-04-13T23:49:21.1600986-07:00
    

Wiederherstellen über URL

Azure SQL Edge unterstützt auch das Wiederherstellen einer Datenbank aus einem Azure Storage-Konto. Wiederherstellungen können aus Sicherungen von Blockblobs oder Seitenblobs erfolgen. Im folgenden Beispiel wird die IronOreSilicaPrediction_2020_04_16.bak Datenbanksicherungsdatei in einem Block-BLOB wiederhergestellt, um die Datenbank zu erstellen. IronOreSilicaPrediction_3

RESTORE DATABASE IronOreSilicaPrediction_3
FROM URL = 'https://mystorageaccount.blob.core.windows.net/mysecondcontainer/IronOreSilicaPrediction_2020_04_16.bak'
WITH MOVE 'IronOreSilicaPrediction' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.mdf',
MOVE 'IronOreSilicaPrediction_log' TO '/var/opt/mssql/data/IronOreSilicaPrediction_Primary_3.ldf',
STATS = 10;