Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come eseguire il backup di database di SQL Server nelle macchine virtuali di Azure usando Backup di Azure tramite l'API REST.
Nota
Per altre informazioni sulle configurazioni e sugli scenari supportati, vedere la matrice di supporto del backup di SQL.
Prerequisiti
- Un insieme di credenziali di Servizi di ripristino
- Criteri per la configurazione del backup per i database SQL.
Per altre informazioni su come creare nuovi insiemi di credenziali e criteri, vedere le esercitazioni sull’API REST per creare l'insieme di credenziali e creare criteri.
Usare le risorse seguenti:
- Insieme di credenziali di Servizi di ripristino: SQLServer2012
- Policy: HourlyLogBackup
- Gruppo di risorse: SQLServerSelfHost
Configurare il backup per i database di SQL Server non protetti nella macchina virtuale di Azure
Individuare i database di SQL Server non protetti
L'insieme di credenziali deve individuare tutte le macchine virtuali di Azure nella sottoscrizione con i database SQL di cui è possibile eseguire il backup nell'insieme di credenziali di Servizi di ripristino. Per recuperare i dettagli, attivare l'operazione di aggiornamento. Si tratta di un'operazione di POST asincrona che assicura che l'insieme di credenziali riceva l'elenco più recente di tutti i database SQL non protetti nella sottoscrizione corrente e li memorizza nella cache. Quando il database viene memorizzato nella cache, i servizi di ripristino possono accedere al database e proteggerlo.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{vaultResourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/{fabricName}/refreshContainers?api-version=2016-12-01&$filter={$filter}
L’URI POST include parametri {subscriptionId}
, {vaultName}
, {vaultresourceGroupName}
e {fabricName}
. Nell'esempio seguente i valori per i diversi parametri sono i seguenti:
-
{fabricName}
: Azure -
{vaultName}
: SQLServer2012 -
{vaultresourceGroupName}
: SQLServerSelfHost -
$filter
: backupManagementType eq 'AzureWorkload'
Poiché tutti i parametri obbligatori sono specificati nell'URI3, non è necessario un corpo della richiesta separato.
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'
Risposte all'operazione di aggiornamento
L'operazione di aggiornamento è un'operazione asincrona. Ciò significa che l'operazione consente di creare un'altra operazione che deve essere registrata separatamente.
L'operazione restituisce due risposte: 202 (Accettata) quando viene creata un'altra operazione e 200 (OK) quando tale operazione è completata.
Risposte di esempio all'operazione di aggiornamento
Dopo aver inviato la richiesta di POST, viene restituita una risposta 202 (accettata).
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
Tenere traccia dell'operazione risultante tramite l'intestazione Location con un semplice comando GET.
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
Una volta individuati tutti i database SQL, il comando GET restituisce una risposta 200 (nessun contenuto). L'insieme di credenziali può ora individuare qualsiasi macchina virtuale con database SQL di cui è possibile eseguire il backup all'interno della sottoscrizione.
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
Elencare le macchine virtuali con i database SQL di cui eseguire il backup con l'insieme di credenziali di Servizi di ripristino
Per verificare la memorizzazione nella cache, elencare tutte le macchine virtuali nella sottoscrizione con i database SQL di cui è possibile eseguire il backup con l'insieme di credenziali di Servizi di ripristino. Individuare quindi l'account di archiviazione desiderato nella risposta. Questa operazione viene eseguita usando l'operazione 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'
Nota
All'URI GET sono associati tutti i parametri obbligatori. Non è necessario alcun corpo della richiesta aggiuntivo.
Esempio di corpo della risposta:
{
"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"
}
}
]
}
Poiché è possibile individuare le macchine virtuali nel corpo della risposta con i relativi nomi descrittivi, l'operazione di aggiornamento eseguita in precedenza è stata completata correttamente. L'insieme di credenziali di Servizi di ripristino può ora individuare correttamente le macchine virtuali con database SQL non protetti nella stessa sottoscrizione.
Registrare le macchine virtuali con l'insieme di credenziali di Servizi di ripristino
È necessario registrare le macchine virtuali con l'insieme di credenziali di Servizi di ripristino in modo che il servizio Backup di Azure possa interagire con i database SQL all'interno della macchina virtuale (usare il valore nel campo Nome per identificare il contenitore di macchine virtuali di Azure). È necessario specificare i valori nella richiesta JSON per ottenere il corpo della richiesta HTTP dal contenitore delle proprietà del risultato dei contenitori che possono essere protetti dall'elenco.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}?api-version=2016-12-01
Impostare le variabili per l'URI come indicato di seguito:
-
{resourceGroupName}
- SQLServerSelfHost -
{fabricName}
- Azure -
{vaultName}
- SQLServer2012 -
{containerName}
: attributo nome nel corpo della risposta dell'operazione GET ProtectableContainers. In questo esempio, il nome dell'attributo è VMAppContainer; Calcolare; SQLServerPMDemo; sqlserver-0.
Nota
Accettare sempre l'attributo nome della risposta e inserirlo in questa richiesta. Non impostare come hard-code né creare il formato nome-contenitore. Se viene creato o viene eseguito l’hard-code, la chiamata API avrà esito negativo se il formato del nome del contenitore cambia in futuro.
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
Il corpo della richiesta di creazione è il seguente:
{
"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"
}
}
Per l'elenco completo delle definizioni del corpo della richiesta e altri dettagli, vedere ProtectionContainers-Register.
Si tratta di un'operazione asincrona e restituisce due risposte: 202 (accettato) quando l'operazione viene accettata e 200 (OK) al termine dell'operazione. Per tenere traccia dello stato dell'operazione, usare l'intestazione della posizione per ottenere lo stato più recente dell'operazione.
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
Esempio di corpo della risposta al completamento dell'operazione:
{
"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"
}
}
È possibile verificare se la registrazione ha avuto esito positivo dal valore del parametro registrationstatus nel corpo della risposta. In questo caso, viene visualizzato lo stato registrato per SQLServer2012; quindi, l'operazione di registrazione ha avuto esito positivo.
Chiedere a tutti i database SQL non protetti in una macchina virtuale
Per richiedere informazioni sugli elementi protetti in un account di archiviazione, usare l'operazione Protection Containers-Inquire. Si tratta di un'operazione asincrona e i risultati devono essere rilevati usando l'intestazione della posizione.
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}
Impostare le variabili per l'URI precedente come indicato di seguito:
-
{resourceGroupName}
: SQLServerSelfHost -
{vaultName}
: SQLServer2012 -
{fabricName}
: Azure -
{containerName}
: fare riferimento all'attributo nome nel corpo della risposta dell'operazione GET ProtectableContainers. In questo esempio, il nome dell'attributo è VMAppContainer; Calcolare; 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'
Al termine della richiesta, restituisce il codice di stato OK.
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
Selezionare i database di cui si vuole eseguire il backup
Per elencare tutti gli elementi proteggibili nella sottoscrizione e individuare il database desiderato di cui eseguire il backup, usare l'operazione GET backupprotectableItems.
GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectableItems?api-version=2016-12-01&$filter={$filter}
Costruire l'URI come segue:
-
{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'
Risposta campione:
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"
}
}
]
}
La risposta contiene l'elenco di tutti i database non protetti e contiene tutte le informazioni richieste dal servizio di ripristino di Azure per configurare il backup. Salvare i nomi di database per un uso futuro.
Abilitare il backup per il database
Dopo che il database pertinente è identificato con il nome descrittivo:
- Selezionare i criteri da proteggere.
- Elencare i criteri esistenti nell'insieme di credenziali, vedere con l'elenco API Criteri.
- Selezionare i criteri rilevanti facendo riferimento al nome dei criteri stessi.
- Esercitazione Creare criteri.
L'abilitazione della protezione è un'operazione PUT asincrona che crea un elemento protetto.
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
Impostare le variabili containerName e protectedItemName usando l'attributo ID nel corpo della risposta dell'operazione GET backupprotectableitems .
Nell'esempio l'ID della condivisione file da proteggere è:
/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
Creare un corpo della richiesta:
Il corpo della richiesta seguente definisce le proprietà necessarie per creare un elemento protetto.
{
"properties": {
"backupManagementType": "AzureWorkload",
"workloadType": "SQLDataBase",
"policyId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupPolicies/HourlyLogBackup"
},
"location": "westcentralus"
}
Dopo aver inviato la PUT richiesta di creazione o aggiornamento di elementi protetti, la risposta iniziale è 202 (accettata) con un'intestazione di posizione.
Risposta di esempio
La creazione di un elemento protetto è un'operazione asincrona che crea un'altra operazione che deve essere rilevata. L'operazione restituisce due risposte: 202 (Accettata) quando viene creata un'altra operazione e 200 (OK) quando tale operazione è completata.
Dopo aver inviato la PUT richiesta di creazione o aggiornamento di elementi protetti, la risposta iniziale è 202 (accettata) con un'intestazione di posizione.
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
Tenere quindi traccia dell'operazione risultante usando l'intestazione location o Azure-AsyncOperation con un comando GET.
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
Al termine dell'operazione, restituisce 200 (OK) con il contenuto dell'elemento protetto nel corpo della risposta.
Corpo della risposta di esempio:
{
"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"
}
}
Ciò conferma che la protezione è abilitata per il database e il primo backup verrà attivato in base alla pianificazione dei criteri.
Attivare un backup su richiesta per il database
Dopo aver configurato un database per il backup, i backup vengono eseguiti in base alla pianificazione dei criteri. È possibile attendere il primo backup pianificato o attivare un backup su richiesta in qualsiasi momento.
L'attivazione di un backup su richiesta è un'operazione POST.
Nota
Il periodo di conservazione di questo backup è determinato dal tipo di backup su richiesta eseguito.
- Su richiesta completo conserva i backup per un minimo di 45 giorni e un massimo di 99 anni.
- Copia su richiesta solo completa accetta qualsiasi valore per la conservazione.
- Differenziale su richiesta conserva il backup in base alla conservazione dei differenziali pianificati impostati nei criteri.
- Log su richiesta conserva i backup in base alla conservazione dei log pianificati impostati nei criteri.
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} e {protectedItemName} sono costruiti in precedenza durante l'abilitazione del backup. Per questo esempio, la situazione è quindi la seguente:
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
Creare il corpo della richiesta
Usare il corpo della richiesta seguente per creare un backup completo su richiesta.
{
"properties": {
"objectType": "AzureWorkloadBackupRequest",
"backupType": "Full"
}
}
Risposte all'operazione di backup su richiesta
L'attivazione di un backup su richiesta è un'operazione asincrona. Ciò significa che l'operazione consente di creare un'altra operazione che deve essere registrata separatamente.
L'operazione restituisce due risposte: 202 (Accettata) quando viene creata un'altra operazione e 200 (OK) quando tale operazione è completata.
Risposte di esempio all'operazione di backup su richiesta
Dopo aver inviato la richiesta POST per un backup su richiesta, la risposta iniziale è 202 (accettazione) con un'intestazione location o Azure-async.
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
Tenere quindi traccia dell'operazione risultante usando l'intestazione location o Azure-AsyncOperation con un comando GET.
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
Al termine dell'operazione, restituisce 200 (OK) con l'ID del processo di backup risultante nel corpo della risposta.
Corpo della risposta di esempio
{
"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"
}
}
Dal moment che il processo di backup è un'operazione con esecuzione prolungata, ne deve essere tenuta traccia come illustrato nel documento per monitorare i processi usando l'API REST.
Passaggi successivi
- Informazioni su come ripristinare i database SQL usando l'API REST.