Freigeben über


Sichern Sie SQL Server Datenbanken in Azure VMs mithilfe von Azure Backup über die REST-API

In diesem Artikel wird beschrieben, wie Sie SQL Server Datenbanken in Azure-VMs mithilfe von Azure Backup über die REST-API sichern.

Hinweis

Weitere Informationen zu den unterstützten Konfigurationen und Szenarien finden Sie in der Supportmatrix für SQL-Backups.

Voraussetzungen

  • Recovery Services-Tresor
  • Eine Richtlinie zum Konfigurieren der Sicherung für Ihre SQL Datenbank.

Informationen zum Erstellen neuer Tresore und Richtlinien finden Sie in den REST-API-Tutorials zum Erstellen eines Tresors und zum Erstellen einer Richtlinie.

Verwenden Sie die folgenden Ressourcen:

  • Recovery Services Tresor: SQLServer2012
  • Richtlinien: HourlyLogBackup
  • Ressourcengruppe: SQLServerSelfHost

Konfigurieren der Sicherung für ungeschützte SQL Server Datenbanken in Azure VM

Entdecken ungeschützter SQL Server Datenbanken

Der Tresor muss alle Azure-VMs im Abonnement mit SQL-Datenbanken erkennen, damit Sie diese im Recovery Services Tresor sichern können. Zum Abrufen der Details, lösen Sie den Aktualisierungsvorgang aus. Es handelt sich um einen asynchronen POST Vorgang, mit dem sichergestellt wird, dass der Tresor die neueste Liste aller ungeschützten Azure Datenbank im aktuellen Abonnement abruft und zwischenspeichert. Sobald die Datei zwischengespeichert wurde, kann Recovery Services auf die Datenbank zugreifen und sie schützen.

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{vaultResourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/{fabricName}/refreshContainers?api-version=2016-12-01&$filter={$filter}

Der POST-URI enthält {subscriptionId}, {vaultName}, {vaultresourceGroupName}, und {fabricName} Parameter. Im folgenden Beispiel sind die Werte für die verschiedenen Parameter wie folgt:

  • {fabricName}: Azure
  • {vaultName}: SQLServer2012
  • {vaultresourceGroupName}: SQLServerSelfHost
  • $filter: backupManagementType eq 'AzureWorkload'

Da alle erforderlichen Parameter im URI3 angegeben sind, besteht keine Notwendigkeit eines separaten Anforderungstexts.

POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/refreshContainers?api-version=2016-12-01&$filter=backupManagementType eq 'AzureWorkload'

Antworten auf den Aktualisierungsvorgang

Der Aktualisierung Vorgang ist ein asynchroner Vorgang. Das bedeutet, dass in diesem Vorgang ein anderer Vorgang erstellt wird, der separat nachverfolgt werden muss.

Zwei Antworten werden zurückgegeben: 202 (Akzeptiert), wenn ein anderer Vorgang erstellt wurde, und 200 (OK), wenn dieser Vorgang abgeschlossen ist.

Beispielantworten auf den Aktualisierungsvorgang

Nachdem die POST Anforderung gesendet wurde, wird die Antwort 202 (Akzeptiert) zurückgegeben.

HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
X-Content-Type-Options: nosniff
x-ms-request-id: a85ee4a2-56d7-4477-b29c-d140a8bb90fe
x-ms-client-request-id: 4653a4ed-ffbe-4492-ae7d-3e1ab03722af; 4653a4ed-ffbe-4492-ae7d-3e1ab03722af
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: a85ee4a2-56d7-4477-b29c-d140a8bb90fe
x-ms-routing-request-id: SOUTHINDIA:20180528T075517Z:a85ee4a2-56d7-4477-b29c-d140a8bb90fe
Cache-Control: no-cache
Date: Mon, 28 May 2018 07:55:16 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/operationResults/a60bfc5e-e237-4ead-be5c-b845e9566ea8?api-version=2016-12-01
X-Powered-By: ASP.NET

Verfolgen Sie den resultierenden Vorgang mithilfe der Location Kopfzeile mit einem einfachen GET Befehl.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/operationResults/a60bfc5e-e237-4ead-be5c-b845e9566ea8?api-version=2016-12-01

Sobald alle SQL-Datenbanken erkannt wurden, gibt der Befehl GET die Antwort 200 (Kein Inhalt) zurück. Der Tresor kann jetzt alle VM mit SQL ermitteln, die im Abonnement gesichert werden können.

HTTP/1.1 204 NoContent
Pragma: no-cache
X-Content-Type-Options: nosniff
x-ms-request-id: 55ae46bb-0d61-4284-a408-bcfaa36af643
x-ms-client-request-id: b5ffa56f-a521-48a4-91b2-e3bc1e3f1110; b5ffa56f-a521-48a4-91b2-e3bc1e3f1110
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-reads: 14968
x-ms-correlation-request-id: 55ae46bb-0d61-4284-a408-bcfaa36af643
x-ms-routing-request-id: SOUTHINDIA:20180528T075607Z:55ae46bb-0d61-4284-a408-bcfaa36af643
Cache-Control: no-cache
Date: Mon, 28 May 2018 07:56:06 GMT
X-Powered-By: ASP.NET

VMs mit SQL-Datenbanken auflisten, die mit Recovery Services-Tresor gesichert werden können

Um zu bestätigen, dass eine Zwischenspeicherung durchgeführt wurde, werden alle VMs im Abonnement mit SQL-Datenbanken aufgelistet, die mit dem Recovery Services Tresor gesichert werden können. Suchen Sie in der Antwort dann nach dem gewünschten Speicherkonto. Dies erfolgt mithilfe des Vorgangs GET ProtectableContainers.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers?api-version=2016-12-01&$filter=backupManagementType eq 'AzureWorkload'

Hinweis

Der GET-URI enthält alle erforderlichen Parameter. Es ist kein zusätzlicher Anforderungstext erforderlich.

Beispiel des Antworttexts:

{
  "value": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;ad-primary-dc",
      "name": "VMAppContainer;Compute;SQLServerPMDemo;ad-primary-dc",
      "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",
      "properties": {
        "friendlyName": "ad-primary-dc",
        "backupManagementType": "AzureWorkload",
        "protectableContainerType": "VMAppContainer",
        "healthStatus": "Healthy",
        "containerId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/ad-primary-dc"
      }
    },
    {
      "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;ad-secondry-dc",
      "name": "VMAppContainer;Compute;SQLServerPMDemo;ad-secondry-dc",
      "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",
      "properties": {
        "friendlyName": "ad-secondry-dc",
        "backupManagementType": "AzureWorkload",
        "protectableContainerType": "VMAppContainer",
        "healthStatus": "Healthy",
        "containerId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/ad-secondry-dc"
      }
    },
    {
      "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
      "name": "VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
      "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",
      "properties": {
        "friendlyName": "sqlserver-0",
        "backupManagementType": "AzureWorkload",
        "protectableContainerType": "VMAppContainer",
        "healthStatus": "Healthy",
        "containerId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/sqlserver-0"
      }
    }
  ]
}

Da wir die VMs im Antworttext mit den Anzeigenamen finden können, war der oben ausgeführte Aktualisierungsvorgang erfolgreich. Der Recovery Services-Tresor kann jetzt VMs mit ungeschützten SQL-Datenbanken im selben Abonnement erfolgreich erkennen.

Registrieren von VMs im Recovery Services-Tresor

Sie müssen die VMs beim Recovery Services-Tresor registrieren, damit der Azure Backup Dienst mit SQL-Datenbanken innerhalb der VM interagieren kann (verwenden Sie den Wert im Feld Name um den Azure VM-Container zu identifizieren). Sie müssen die Werte in der JSON-Anforderung bereitstellen, um den HTTP-Anforderungstext als Ergebnis aus der benutzerdefinierten Liste des geschützten Container abrufen zu können.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}?api-version=2016-12-01

Legen Sie die Variablen für den URI wie folgt fest:

  • {resourceGroupName} - SQLServerSelfHost
  • {fabricName} - Azurblau
  • {vaultName} - SQLServer2012
  • {containerName} - Dies ist das Namensattribut im Antworttext des Vorgangs GET ProtectableContainers. In unserem Beispiel ist der Attributname VMAppContainer; Berechnen; SQLServerPMDemo;sqlserver-0.

Hinweis

Übernehmen Sie immer das name-Attribut der Antwort, und geben Sie es in diese Anforderung ein. Das container-name-Format darf nicht hartcodiert oder erstellt werden. Wenn Sie es erstellen oder hartcodieren, schlägt der API-Aufruf fehl, falls sich das container-name-Format in Zukunft ändert.


PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0?api-version=2016-12-01

Der Text von „Anforderung erstellen“ lautet wie folgt:

{
  "properties": {
    "backupManagementType": "AzureWorkload",
    "friendlyName": "sqlserver-0",
    "containerType": "VMAppContainer",
    "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
    "workloadType": "SQLDataBase"
  }
}

Die vollständige Liste mit Definitionen des Anforderungstexts und weitere Einzelheiten finden Sie unterProtectionContainers-Register.

Dies ist ein asynchroner Vorgang, der zwei Antworten zurückgibt: 202 (Accepted), wenn der Vorgang akzeptiert wird, und 200 (OK), wenn der Vorgang abgeschlossen ist. Um den Vorgangsstatus nachzuverfolgen, verwenden Sie den location-Header, um den aktuellen Status des Vorgangs abzurufen.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/operationResults/2a72d206-b4d8-4c59-89ef-ef3283132237?api-version=2016-12-01

Beispiel für Antworttext, wenn der Vorgang abgeschlossen ist:

{
  "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
  "name": "VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
  "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers",
  "properties": {
    "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/sqlserver-0",
    "lastUpdatedTime": "2018-05-28T08:33:14.7304852Z",
    "extendedInfo": {
      "hostServerName": "sqlserver-0.shopkart.com",
      "inquiryInfo": {
        "status": "Success",
        "errorDetail": {
          "code": "Success",
          "message": "",
          "recommendations": [
            ""
          ]
        },
        "inquiryDetails": [
          {
            "type": "SQL",
            "itemCount": 5,
            "inquiryValidation": {
              "status": "Success",
              "errorDetail": {
                "code": "Success",
                "message": "",
                "recommendations": [
                  ""
                ]
              }
            }
          }
        ]
      }
    },
    "friendlyName": "sqlserver-0",
    "backupManagementType": "AzureWorkload",
    "registrationStatus": "Registered",
    "healthStatus": "Healthy",
    "containerType": "VMAppContainer",
    "protectableObjectType": "VMAppContainer"
  }
}

Sie können anhand des Wertes des Parameters registrationstatus im Antworttext überprüfen, ob die Registrierung erfolgreich war. In unserem Fall wird als Status, Registriert für SQLServer2012 angezeigt, der Registrierungsvorgang war also erfolgreich.

Alle ungeschützten SQL-Datenbanken unter einer VM abfragen

Mit dem Protection Containers-Inquire Vorgang können Sie schützbare Elemente in einem Speicherkonto abfragen. Es handelt sich um einen asynchronen Vorgang, und die Ergebnisse sollten anhand des location-Headers nachverfolgt werden.

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/inquire?api-version=2016-12-01$filter={$filter}

Legen Sie die Variablen für den oben stehenden URI wie folgt fest:

  • {resourceGroupName}: SQLServerSelfHost
  • {vaultName}: SQLServer2012
  • {fabricName}: Azure
  • {containerName}: Verweist auf das Namensattribut im Antworttext des GET ProtectableContainers Vorgangs. In unserem Beispiel ist der Attributname VMAppContainer; Berechnen; SQLServerPMDemo;sqlserver-0.
POST https://management.azure.com/subscriptions/e3d2d341-4ddb-4c5d-9121-69b7e719485e/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/inquire?api-version=2016-12-01$filter=workloadType EQ 'SQLDatabase'

Wenn die Anforderung erfolgreich ist, gibt sie den Statuscode OK zurück.

HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
X-Content-Type-Options: nosniff
x-ms-request-id: 50295ae9-3d5b-48d1-8a6d-a0acb6d06b98
x-ms-client-request-id: 4174f98a-80b9-4747-9500-6f702ed83930; 4174f98a-80b9-4747-9500-6f702ed83930
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1197
x-ms-correlation-request-id: 50295ae9-3d5b-48d1-8a6d-a0acb6d06b98
x-ms-routing-request-id: SOUTHINDIA:20180528T084628Z:50295ae9-3d5b-48d1-8a6d-a0acb6d06b98
Cache-Control: no-cache
Date: Mon, 28 May 2018 08:46:28 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/operationResults/f0751ec2-445a-4d0e-a6a5-a19957459655?api-version=2016-12-01
X-Powered-By: ASP.NET

Wählen Sie die Datenbanken aus, die Sie sichern möchten.

Sie können alle schützbaren Elemente unter dem Abonnement auflisten und die gewünschte Datenbank, die gesichert werden soll, mit dem GET backupprotectableItems Vorgang suchen.

GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectableItems?api-version=2016-12-01&$filter={$filter}

Erstellen Sie den URI wie folgt:

  • {resourceGroupName}: SQLServerSelfHost
  • {vaultName}: SQLServer2012
  • {$filter}: backupManagementType eq 'AzureWorkload'
GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupProtectableItems?api-version=2016-12-01&$filter=backupManagementType eq 'AzureWorkload'

Beispiel für eine Antwort:

Status Code:200

{
  "value": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;SQLServerSelfHost;SQLServersql2012/protectableItems/sqldatabase;mssqlserver;msdb",
      "name": "sqldatabase;mssqlserver;msdb",
      "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectableItems",
      "properties": {
        "parentName": "MSSQLSERVER",
        "serverName": "SQLServersql2012",
        "isAutoProtectable": false,
        "subinquireditemcount": 0,
        "subprotectableitemcount": 0,
        "backupManagementType": "AzureWorkload",
        "workloadType": "SQL",
        "protectableItemType": "SQLDataBase",
        "friendlyName": "msdb",
        "protectionState": "NotProtected"
      }
    }
]
}

Die Antwort enthält die Liste aller ungeschützten Datenbanken und enthält alle Informationen, die Azure Recovery Service zum Konfigurieren der Sicherung benötigt. Speichern Sie die Datenbanknamen für die zukünftige Verwendung.

Aktivieren der Sicherung für die Datenbank

Nachdem die relevante Datenbank mit dem Anzeigenamen identifiziert wurde:

  1. Wählen Sie die zu schützende Richtlinie aus.
  2. Vorhandene Richtlinien im Tresor auflisten, siehe Liste der Richtlinien-API.
  3. Wählen Sie dann die entsprechende Richtlinie aus, indem Sie auf den Richtliniennamen verweisen.
  4. Richtlinien Tutorial erstellen.

Beim Aktivieren des Schutzes handelt es sich um einen asynchronen PUT Vorgang, mit dem ein geschütztes Element erstellt wird.

PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/{containerName};sqlserver-0/protectedItems/{protectedItemName}?api-version=2016-12-01

Legen Sie die Variablen containername und protecteditemname unter Verwendung des ID-Attributs im Antworttext des GET backupprotectableitems-Vorgangs fest.

In unserem Beispiel lautet die ID der Dateifreigabe, die wir schützen wollen:

/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb
  • {containerName}: VMAppContainer; Compute; SQLServerPMDemo; sqlserver-0
  • {protectedItemName}: sqldatabase; mssqlserver; msdb

Erstellen Sie einen Anforderungstext:

Der folgende Anforderungstext definiert zum Erstellen eines geschützten Elements erforderliche Eigenschaften.

{
  "properties": {
    "backupManagementType": "AzureWorkload",
    "workloadType": "SQLDataBase",
    "policyId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupPolicies/HourlyLogBackup"
  },
  "location": "westcentralus"
}

Nachdem Sie die PUT-Anforderung für die Erstellung oder Aktualisierung eines geschützten Elements gesendet haben, wird als erste Antwort „202 (Akzeptiert)“ mit einem location-Header zurückgegeben.

Beispiel für eine Antwort

Die Erstellung eines geschützten Elements ist ein asynchroner Vorgang, bei dem ein weiterer Vorgang erstellt wird, der nachverfolgt werden muss. Zwei Antworten werden zurückgegeben: 202 (Akzeptiert), wenn ein anderer Vorgang erstellt wurde, und 200 (OK), wenn dieser Vorgang abgeschlossen ist.

Nachdem Sie die PUT-Anforderung für die Erstellung oder Aktualisierung eines geschützten Elements gesendet haben, wird als erste Antwort „202 (Akzeptiert)“ mit einem location-Header zurückgegeben.

HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
Azure-AsyncOperation: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationsStatus/b686a165-387f-461d-8579-c55338566338?api-version=2016-12-01
X-Content-Type-Options: nosniff
x-ms-request-id: ab6a8c6c-ab90-433a-8dc2-5194901d428d
x-ms-client-request-id: 7d03bcef-562a-4ddc-8086-a3f4981be915; 7d03bcef-562a-4ddc-8086-a3f4981be915
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: ab6a8c6c-ab90-433a-8dc2-5194901d428d
x-ms-routing-request-id: SOUTHINDIA:20180528T102112Z:ab6a8c6c-ab90-433a-8dc2-5194901d428d
Cache-Control: no-cache
Date: Mon, 28 May 2018 10:21:12 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationResults/b686a165-387f-461d-8579-c55338566338?api-version=2016-12-01
X-Powered-By: ASP.NET

Verfolgen Sie anschließend den resultierenden Vorgang mithilfe des Location- oder Azure-AsyncOperation-Headers und eines GET Befehls.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationResults/b686a165-387f-461d-8579-c55338566338?api-version=2016-12-01

Wenn der Vorgang abgeschlossen ist, wird 200 (OK) mit dem Inhalt des geschützten Elements im Antworttext zurückgegeben.

Beispiel für Antworttext:

{
  "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb",
  "name": "SQLDataBase;mssqlserver;msdb",
  "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems",
  "properties": {
    "friendlyName": "msdb",
    "serverName": "sqlserver-0.shopkart.com",
    "parentName": "MSSQLSERVER",
    "parentType": "AzureVmWorkloadSQLInstance",
    "protectionStatus": "Healthy",
    "protectionState": "IRPending",
    "lastBackupStatus": "IRPending",
    "lastBackupErrorDetail": {
      "code": "Success",
      "message": ""
    },
    "protectedItemDataSourceId": "17592741727863",
    "protectedItemHealthStatus": "IRPending",
    "extendedInfo": {
      "recoveryPointCount": 0,
      "policyState": "Consistent"
    },
    "protectedItemType": "AzureVmWorkloadSQLDatabase",
    "backupManagementType": "AzureWorkload",
    "workloadType": "SQLDataBase",
    "containerName": "VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
    "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/VMAppContainer/sqlserver-0",
    "policyId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupPolicies/HourlyLogBackup"
  }
}

Dadurch wird bestätigt, dass der Schutz für die Datenbank aktiviert ist und die erste Sicherung gemäß dem Richtlinienzeitplan ausgelöst wird.

Auslösen einer bei Bedarf erstellten Sicherung für die Datenbank

Nachdem Sie eine Datenbank für die Sicherung konfiguriert haben, werden Sicherungen gemäß dem Richtlinienzeitplan ausgeführt. Sie können warten, bis die erste geplante Sicherung durchgeführt wird, oder jederzeit eine bedarfsgesteuerte Sicherung auslösen.

Das Auslösen einer bedarfsgesteuerten Sicherung ist ein POST-Vorgang.

Hinweis

Die Aufbewahrungsdauer dieser Sicherung wird durch die Art der von Ihnen ausgeführten On-Demand-Sicherung bestimmt.

  • On-Demand-Full speichert Backups für mindestens 45 Tage und maximal 99 Jahre.
  • Die vollständige On-Demand-Kopie akzeptiert alle Werte zur Aufbewahrung.
  • On-Demand-Differential bewahrt die Sicherung gemäß der in der Richtlinie festgelegten Aufbewahrung geplanter Differentiale auf.
  • Das On-Demand-Protokoll bewahrt Sicherungen gemäß der in der Richtlinie festgelegten Aufbewahrung geplanter Protokolle auf.
POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/backup?api-version=2016-12-01

{containerName} und {protectedItemName} entsprechen den oben stehenden beim Aktivieren der Sicherung erstellten Werten. In unserem Beispiel ergibt dies Folgendes:

POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/Microsoft.RecoveryServices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/backup?api-version=2016-12-01

Erstellen des Anforderungstexts

Verwenden Sie den folgenden Anforderungstext, um eine auf Wunsch vollständige Sicherung zu erstellen.

{
  "properties": {
    "objectType": "AzureWorkloadBackupRequest",
    "backupType": "Full"
  }
}

Antworten auf den bedarfsgesteuerten Sicherungsvorgang

Das Auslösen einer bedarfsgesteuerten Sicherung ist ein asynchroner Vorgang. Das bedeutet, dass in diesem Vorgang ein anderer Vorgang erstellt wird, der separat nachverfolgt werden muss.

Zwei Antworten werden zurückgegeben: 202 (Akzeptiert), wenn ein anderer Vorgang erstellt wurde, und 200 (OK), wenn dieser Vorgang abgeschlossen ist.

Beispielantworten auf den bedarfsgesteuerten Sicherungsvorgang

Nachdem Sie die POST-Anforderung für eine bedarfsgesteuerte Sicherung gesendet haben, wird als erste Antwort „202 (Akzeptiert)“ mit einem location- oder Azure-async-Header zurückgegeben.

HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
Azure-AsyncOperation: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationsStatus/cd2a3b13-d392-4e81-86ac-02ea91cc70b9?api-version=2016-12-01
X-Content-Type-Options: nosniff
x-ms-request-id: a691e2a9-8203-462d-a4da-d1badde22f83
x-ms-client-request-id: 6b033cf6-f875-4c03-8985-9add07ec2845; 6b033cf6-f875-4c03-8985-9add07ec2845
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: a691e2a9-8203-462d-a4da-d1badde22f83
x-ms-routing-request-id: SOUTHINDIA:20180528T114321Z:a691e2a9-8203-462d-a4da-d1badde22f83
Cache-Control: no-cache
Date: Mon, 28 May 2018 11:43:21 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationResults/cd2a3b13-d392-4e81-86ac-02ea91cc70b9?api-version=2016-12-01
X-Powered-By: ASP.NET

Verfolgen Sie anschließend den resultierenden Vorgang mithilfe des Location- oder Azure-AsyncOperation-Headers und eines GET Befehls.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationsStatus/cd2a3b13-d392-4e81-86ac-02ea91cc70b9?api-version=2016-12-01

Wenn der Vorgang abgeschlossen ist, wird 200 (OK) mit der ID des resultierenden Sicherungsauftrags im Antworttext zurückgegeben.

Beispiel für Antworttext

{
  "id": "cd2a3b13-d392-4e81-86ac-02ea91cc70b9",
  "name": "cd2a3b13-d392-4e81-86ac-02ea91cc70b9",
  "status": "Succeeded",
  "startTime": "2018-05-28T11:43:21.6516182Z",
  "endTime": "2018-05-28T11:43:21.6516182Z",
  "properties": {
    "objectType": "OperationStatusJobExtendedInfo",
    "jobId": "c22eca5d-0c1c-48a0-a40d-69bef708d92a"
  }
}

Da es sich bei dem Sicherungsauftrag um einen Vorgang mit langer Ausführungsdauer handelt, muss er wie im Dokument zum Überwachen von Aufträgen mit der REST-API erläutert nachverfolgt werden.

Nächste Schritte