Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como fazer backup de bancos de dados do SQL Server em VMs do Azure usando o Backup do Azure via API REST.
Nota
Consulte a matriz de suporte de backup SQL para saber mais sobre as configurações e cenários suportados.
Pré-requisitos
- Um Cofre dos Serviços de Recuperação
- Uma política para configurar o backup para seus bancos de dados SQL.
Para obter mais informações sobre como criar novos cofres e políticas, consulte criar cofre e criar política tutoriais da API REST.
Use os seguintes recursos:
- Cofre dos Serviços de Recuperação: SQLServer2012
- Política: HourlyLogBackup
- Grupo de recursos: SQLServerSelfHost
Configurar o backup para bancos de dados do SQL Server desprotegidos na VM do Azure
Descobrir bancos de dados SQL Server desprotegidos
O cofre precisa descobrir todas as VMs do Azure na assinatura com bancos de dados SQL dos quais você pode fazer backup no cofre dos Serviços de Recuperação. Para obter os detalhes, acione a operação de atualização. É uma operação POST assíncrona que garante que o cofre receba a lista mais recente de todos os bancos de dados SQL desprotegidos na assinatura atual e os armazene em cache. Depois que o banco de dados é armazenado em cache, os serviços de recuperação podem acessá-lo e protegê-lo.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{vaultResourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/{fabricName}/refreshContainers?api-version=2016-12-01&$filter={$filter}
O URI POST tem {subscriptionId}, {vaultName}, {vaultresourceGroupName}, e {fabricName} parâmetros. No exemplo a seguir, os valores para os diferentes parâmetros são os seguintes:
-
{fabricName}: Azure -
{vaultName}: SQLServer2012 -
{vaultresourceGroupName}: SQLServerSelfHost -
$filter: backupManagementType eq 'AzureWorkload'
Como todos os parâmetros necessários são fornecidos no URI3, um corpo de solicitação separado não é necessário.
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'
Respostas à operação de atualização
A operação de atualização é uma operação assíncrona. Isso significa que essa operação cria outra operação que precisa ser rastreada separadamente.
Ele retorna duas respostas: 202 (Aceito) quando outra operação é criada e 200 (OK) quando essa operação é concluída.
Exemplos de respostas à operação de atualização
Depois de enviar a solicitação POST , uma resposta 202 (Aceito) é retornada.
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
Acompanhe a operação resultante usando o cabeçalho Location com um simples 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
Depois que todos os bancos de dados SQL são descobertos, o comando GET retorna uma resposta 200 (Sem Conteúdo). O cofre agora pode descobrir qualquer máquina virtual (VM) com bancos de dados SQL que podem ser salvaguardados dentro da subscrição.
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
Listar VMs com bases de dados SQL para fazer backup com o cofre dos Serviços de Recuperação
Para confirmar que o caching foi feito, liste todas as VMs na subscrição com bancos de dados SQL que podem ser copiados em backup com o cofre dos Serviços de Recuperação. Em seguida, localize a conta de armazenamento desejada na resposta. Isso é feito usando a operação 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
O GET URI tem todos os parâmetros necessários. Não é necessário nenhum corpo de solicitação adicional.
Exemplo de corpo de resposta:
{
"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"
}
}
]
}
Como podemos localizar as VMs no corpo da resposta com seus nomes amigáveis, a operação de atualização executada acima foi bem-sucedida. O cofre de Serviços de Recuperação agora consegue descobrir com sucesso VMs com bases de dados SQL desprotegidas na mesma assinatura.
Registrar VMs com o cofre dos Serviços de Recuperação
Você precisa registrar as VMs no cofre dos Serviços de Recuperação para que o serviço de Backup do Azure possa interagir com bancos de dados SQL dentro da VM (use o valor no campo Nome para identificar o contêiner da VM do Azure). Você precisa fornecer os valores na solicitação JSON para obter o corpo da solicitação HTTP do conjunto de propriedades do resultado da lista de contêineres protegíveis.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}?api-version=2016-12-01
Defina as variáveis para o URI da seguinte maneira:
-
{resourceGroupName}- SQLServerSelfHost -
{fabricName}- Azure -
{vaultName}- SQLServer2012 -
{containerName}- Este é o atributo name no corpo de resposta da operação GET ProtectableContainers . Em nosso exemplo, o nome do atributo é VMAppContainer; Computação; SQLServerPMDemo; SQLServer-0.
Nota
Pegue sempre o atributo name da resposta e preencha-o nesta solicitação. Não codifice nem crie o formato container-name. Se criar ou codificar manualmente, a chamada de API falhará se o formato do nome do contentor for alterado no 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
O corpo da solicitação de criação é o seguinte:
{
"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"
}
}
Para obter a lista completa de definições do corpo da solicitação e outros detalhes, consulte ProtectionContainers-Register.
Esta é uma operação assíncrona e retorna duas respostas: 202 (Aceito) quando a operação é aceita e 200 (OK) quando a operação é concluída. Para acompanhar o status da operação, use o cabeçalho do local para obter o status mais recente da operação.
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
Exemplo de corpo de resposta quando a operação é concluída:
{
"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"
}
}
Você pode verificar se o registro foi bem-sucedido a partir do valor do parâmetro registrationstatus no corpo da resposta. No nosso caso, ele mostra o status como registrado para SQLServer2012, portanto, a operação de registro foi bem-sucedida.
Informe-se sobre todos os bancos de dados SQL desprotegidos em uma VM
Para consultar sobre itens protegíveis numa conta de armazenamento, utilize a operação Protection Containers-Inquire. É uma operação assíncrona e os resultados devem ser rastreados usando o cabeçalho location.
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}
Defina as variáveis para o URI acima da seguinte maneira:
-
{resourceGroupName}: SQLServerSelfHost -
{vaultName}: SQLServer2012 -
{fabricName}: Azure -
{containerName}: Consulte o atributo "name" no corpo da resposta da operação GET ProtectableContainers. Em nosso exemplo, o nome do atributo é VMAppContainer; Computação; 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'
Quando a solicitação for bem-sucedida, ela retornará o código de status 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
Selecione os bancos de dados dos quais deseja fazer backup
Para listar todos os itens protegíveis na assinatura e localizar o banco de dados desejado para backup, use a operação GET backupprotectableItems .
GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectableItems?api-version=2016-12-01&$filter={$filter}
Construa o URI da seguinte maneira:
-
{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'
Exemplo de resposta:
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"
}
}
]
}
A resposta contém a lista de todos os bancos de dados desprotegidos e contém todas as informações exigidas pelo Serviço de Recuperação do Azure para configurar o backup. Salve os nomes dos bancos de dados para uso futuro.
Habilitar backup para o banco de dados
Depois de a base de dados relevante ser identificada com o nome amigável:
- Selecione a política que deseja proteger.
- Liste as políticas existentes no cofre, consulte a API de Listagem de Políticas.
- Selecione a política relevante referindo-se ao nome da política.
- Criar tutorial de políticas.
Habilitar a proteção é uma operação PUT assíncrona que cria um item protegido.
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
Defina as variáveis containerName e protectedItemName usando o atributo ID no corpo da resposta da operação GET backupprotectableitems .
No nosso exemplo, o ID da partilha de ficheiros que queremos proteger é:
/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; Computação; SQLServerPMDemo; SQLServer-0 -
{protectedItemName}: sqldatabase; mssqlserver; msdb
Crie um corpo de solicitação:
O corpo da solicitação a seguir define as propriedades necessárias para criar um item protegido.
{
"properties": {
"backupManagementType": "AzureWorkload",
"workloadType": "SQLDataBase",
"policyId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupPolicies/HourlyLogBackup"
},
"location": "westcentralus"
}
Depois de enviar a solicitação PUT para criação ou atualização de item protegido, a resposta inicial é 202 (Aceito) com um cabeçalho de local.
Resposta da amostra
A criação de um item protegido é uma operação assíncrona, que cria outra operação que precisa ser rastreada. Ele retorna duas respostas: 202 (Aceito) quando outra operação é criada e 200 (OK) quando essa operação é concluída.
Depois de enviar a solicitação PUT para criação ou atualização de item protegido, a resposta inicial é 202 (Aceito) com um cabeçalho de local.
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
Em seguida, acompanhe a operação resultante usando o cabeçalho location ou o cabeçalho Azure-AsyncOperation com um 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
Quando a operação for concluída, ela retornará 200 (OK) com o conteúdo do item protegido no corpo da resposta.
Corpo da resposta da amostra:
{
"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"
}
}
Isso confirma que a proteção está habilitada para o banco de dados e o primeiro backup será acionado de acordo com o cronograma da política.
Acionar um backup sob demanda para o banco de dados
Depois de configurar um banco de dados para backup, os backups são executados de acordo com o agendamento da política. Você pode aguardar o primeiro backup agendado ou acionar um backup sob demanda a qualquer momento.
Acionar um backup sob demanda é uma operação POST .
Nota
O período de retenção desse backup é determinado pelo tipo de backup sob demanda executado.
- O On-demand Full retém backups por um período mínimo de 45 dias e máximo de 99 anos.
- A cópia sob demanda somente completa aceita qualquer valor para retenção.
- O diferencial sob pedido retém o backup de acordo com a política de retenção de diferenciais agendados.
- O log sob demanda retém cópias de segurança de acordo com a retenção de logs agendados conforme definido na política.
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} são como construídos acima ao ativar o backup. Para o nosso exemplo, isto traduz-se em:
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
Criar corpo de solicitação
Use o seguinte corpo de solicitação para criar um backup completo sob demanda.
{
"properties": {
"objectType": "AzureWorkloadBackupRequest",
"backupType": "Full"
}
}
Respostas à operação de backup sob demanda
Acionar um backup sob demanda é uma operação assíncrona. Isso significa que essa operação cria outra operação que precisa ser rastreada separadamente.
Ele retorna duas respostas: 202 (Aceito) quando outra operação é criada e 200 (OK) quando essa operação é concluída.
Exemplos de respostas à operação de backup sob demanda
Depois de enviar a solicitação POST para um backup sob demanda, a resposta inicial é 202 (Aceito) com um cabeçalho de local ou Azure-async-header.
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
Em seguida, acompanhe a operação resultante usando o cabeçalho location ou o cabeçalho Azure-AsyncOperation com um 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
Quando a operação estiver concluída, ela retornará 200 (OK) com o ID do trabalho de backup gerado no corpo da resposta.
Corpo de resposta da amostra
{
"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"
}
}
Como o trabalho de backup é uma operação de longa duração, é necessário monitorizá-lo conforme explicado no documento de monitorização de trabalhos usando a API REST.
Próximos passos
- Restaure bancos de dados SQL usando a API REST.
- Gerencie bancos de dados do SQL Server em VMs do Azure com o portal do Azure, CLI do Azure, API REST.