Backup do SQL Server para URL para práticas recomendadas e solução de problemas do Armazenamento de Blobs do Microsoft Azure
Aplica-se a:SQL Server
Azure SQL Managed Instance
Este artigo inclui práticas recomendadas e dicas de solução de problemas para backup e restaurações do SQL Server para o Armazenamento de Blobs do Microsoft Azure.
Para obter mais informações sobre como usar o Armazenamento de Blob do Azure para operações de backup ou restauração do SQL Server, consulte:
Backup e restauração do SQL Server com o Microsoft Azure Blob Storage
Tutorial: Backup e restauração do SQL Server para o armazenamento Blob do Azure
Gerenciar backups
A lista a seguir inclui recomendações gerais para gerenciar backups:
Recomenda-se um nome de arquivo exclusivo para cada backup para evitar a substituição acidental dos blobs.
Ao criar um contêiner, você deve definir o nível de acesso como privada, para que apenas usuários ou contas que possam fornecer as informações de autenticação necessárias possam ler ou gravar os blobs no contêiner.
Para bancos de dados do SQL Server em uma instância do SQL Server em execução em uma Máquina Virtual do Azure, use uma conta de armazenamento na mesma região da máquina virtual para evitar custos de transferência de dados entre regiões. O uso da mesma região também garante o desempenho ideal para operações de backup e restauração.
A atividade de backup com falha pode resultar em um arquivo de backup inválido. Recomendamos a identificação periódica de backups com falha e a exclusão dos arquivos blob. Para obter mais informações, consulte Excluindo arquivos de Blob de backup com concessões ativas.
O uso da opção
WITH COMPRESSION
durante o backup pode minimizar os custos de armazenamento e os custos de transação de armazenamento. Também pode diminuir o tempo necessário para concluir o processo de backup.Defina os argumentos
MAXTRANSFERSIZE
eBLOCKSIZE
como recomendado em Backup do SQL Server para URL.O SQL Server é independente do tipo de redundância de armazenamento usado. O backup em blobs de página e blobs de bloco é compatível com cada redundância de armazenamento (LRS/ZRS/GRS/RA-GRS/RA-GZRS, etc.).
Lidar com arquivos grandes
A operação de backup do SQL Server usa vários threads para otimizar a transferência de dados para o Armazenamento de Blobs do Azure. No entanto, o desempenho depende de vários fatores, como largura de banda ISV e tamanho do banco de dados. Se você planeja fazer backup de grandes bancos de dados ou grupos de arquivos de um banco de dados SQL Server local, você deve fazer alguns testes de taxa de transferência primeiro. O SLA do Azure para Armazenamento definiu tempos máximos de processamento para blobs que podem ser levados em consideração.
Usar a opção WITH COMPRESSION
, conforme recomendado na seção Gerenciar backups, é importante ao fazer backup de arquivos grandes.
Solucionar problemas de backup ou restauração a partir da URL
A seguir estão algumas maneiras rápidas de solucionar erros ao fazer backup ou restaurar a partir do Armazenamento de Blobs do Azure.
Para evitar erros devido a opções ou limitações sem suporte, revise a lista de limitações e consulte o suporte relativo às informações dos comandos BACKUP
e RESTORE
no artigo Backup e restauração do SQL Server com o Microsoft Azure Blob Storage.
Falha na inicialização
Backups paralelos para o mesmo blob fazem com que um dos backups falhe com um erro de inicialização falha.
No SQL Server 2016 (13.x) e versões posteriores, o blob de bloco é recomendado para o backup para URL.
Se você estiver usando blobs de página com
BACKUP TO URL
, poderá usar do Sinalizador de Rastreamento 3051 para ativar o registro em log em um log de erros específico com o seguinte formato em:BackupToUrl-\<instname>-\<dbname>-action-\<PID>.log
, em que\<action>
é uma das seguintes opções:DB
FILELISTONLY
LABELONLY
HEADERONLY
VERIFYONLY
Também pode encontrar informações consultando o Visualizador de Eventos do Windows, em Registos da aplicação com o nome SQLBackupToUrl
.
A solicitação não pôde ser executada devido a um erro de dispositivo de E/S.
Considere COMPRESSION
, MAXTRANSFERSIZE
, BLOCKSIZE
e vários argumentos de URL ao fazer backup de bancos de dados grandes. Consulte Fazendo backup de um VLDB para o Armazenamento de Blob do Azure.
O erro:
Msg 3202, Level 16, State 1, Line 1
Write on "https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak" failed:
1117(The request could not be performed because of an I/O device error.)
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.
Um exemplo de resolução:
BACKUP DATABASE TestDb
TO URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak',
URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_1.bak',
URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_2.bak'
WITH COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536;
A marca de arquivo de mensagens no dispositivo não está alinhada
Ao restaurar a partir de um backup compactado, você pode ver o seguinte erro:
SqlException 3284 occurred. Severity: 16 State: 5
Message Filemark on device 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak' is not aligned.
Reissue the Restore statement with the same block size used to create the backupset: '65536' looks like a possible value.
Para resolver este erro, reemita a instrução RESTORE
com BLOCKSIZE = 65536
reespecificado.
A atividade de backup com falha pode resultar em blobs com concessões ativas
Erro durante o backup devido a blobs que têm concessão ativa neles: Failed backup activity can result in blobs with active leases.
Se uma instrução de backup for tentada novamente, a operação de backup poderá falhar com um erro semelhante à seguinte saída:
Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request.
Se uma instrução de restauração for tentada em um arquivo de blob de backup que tenha uma concessão ativa, a operação de restauração falhará com um erro semelhante ao seguinte:
Exception Message: The remote server returned an error: (409) Conflict..
Quando esse erro ocorre, os arquivos blob precisam ser excluídos. Para obter mais informações sobre esse cenário e como corrigir esse problema, consulte Excluindo arquivos de Blob de backup com concessões ativas.
Erro 50 do SO: O pedido não é suportado
Ao fazer backup de um banco de dados, você pode ver Operating system error 50(The request is not supported)
de erro pelos seguintes motivos:
- A conta de armazenamento especificada não é V1/V2 de uso geral.
- O token SAS tinha um símbolo de
?
no início do token quando a credencial foi criada. Se sim, remova-o. - A conexão atual não consegue se conectar à conta de armazenamento da máquina atual usando o Gerenciador de Armazenamento ou o SQL Server Management Studio (SSMS).
- A política atribuída ao token SAS expirou. Crie uma nova política usando o Gerenciador de Armazenamento do Azure e crie um novo token SAS usando a política ou altere a credencial e tente fazer backup novamente.
- O certificado raiz está em falta na loja de Certificados Raiz Fidedignos. Para obter mais informações, consulte Autoridades de certificação raiz do Azure.
Erros de autenticação
O WITH CREDENTIAL
é uma nova opção e necessário para fazer backup ou restaurar a partir do Armazenamento de Blobs do Azure.
As falhas relacionadas à credencial podem ser as seguintes: The credential specified in the **BACKUP** or **RESTORE** command does not exist.
Para evitar esse problema, você pode incluir instruções T-SQL para criar a credencial se uma não existir na instrução de backup. Segue-se um exemplo que pode utilizar:
IF NOT EXISTS (
SELECT *
FROM sys.credentials
WHERE credential_identity = 'mycredential'
)
CREATE CREDENTIAL [<credential name>]
WITH IDENTITY = 'mystorageaccount',
SECRET = '<storage access key>';
A credencial existe, mas o login usado para executar o comando de backup não tem permissões para acessar as credenciais. Use uma conta na função db_backupoperator com Alterar quaisquer credenciais permissões.
Verifique o nome da conta de armazenamento e os valores da chave. As informações armazenadas na credencial devem corresponder aos valores de propriedade da conta de armazenamento do Azure que você está usando nas operações de backup e restauração.
400 erros (solicitação incorreta)
Usando o SQL Server 2012 (11.x), você pode encontrar um erro ao executar um backup semelhante à seguinte saída:
Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (400) Bad Request.
Isso é causado pela versão TLS suportada pela Conta de Armazenamento do Azure. Alterar a versão TLS suportada ou utilizar a solução alternativa listada no KB4017023.
Erros de proxy
Se utilizar Servidores Proxy para aceder à Internet, poderá ver os seguintes problemas:
Limitação de conexão por servidores proxy
Os servidores proxy podem ter configurações que limitam o número de conexões por minuto. O processo de backup para URL é um processo multi-threaded e, portanto, pode ultrapassar esse limite. Se isso acontecer, o servidor proxy mata a conexão. Para resolver esse problema, altere as configurações de proxy para que o SQL Server não esteja usando o proxy. A seguir estão alguns exemplos dos tipos ou mensagens de erro que você pode ver no log de erros:
Write on "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak" failed: Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.
A nonrecoverable I/O error occurred on file "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Error could not be gathered from Remote Endpoint.
Msg 3013, Level 16, State 1, Line 2
BACKUP DATABASE is terminating abnormally.
BackupIoRequest::ReportIoError: write failure on backup device https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak'. Operating system error Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.
Se estiver a usar blobs de página, ao ativar o registo detalhado utilizando o indicador de rastreio 3051, poderá também ver a seguinte mensagem nos logs: HTTP status code 502, HTTP Status Message Proxy Error (The number of HTTP requests per minute exceeded the configured limit. Contact your ISA Server administrator.)
Configurações de proxy padrão não captadas
Às vezes, as configurações padrão não são captadas, causando erros de autenticação de proxy, como:
A nonrecoverable I/O error occurred on file "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (407)* **Proxy Authentication Required.
Para resolver esse problema, crie um arquivo de configuração que permita que o processo de backup para URL use as configurações de proxy padrão usando as seguintes etapas:
Crie um arquivo de configuração chamado
BackuptoURL.exe.config
com o seguinte conteúdo xml:<?xml version ="1.0"?> <configuration> <system.net> <defaultProxy enabled="true" useDefaultCredentials="true"> <proxy usesystemdefault="true" /> </defaultProxy> </system.net> </configuration>
Coloque o arquivo de configuração na pasta
Binn
da instância do SQL Server. Por exemplo, se meu SQL Server estiver instalado na unidade deC
da máquina, coloque o arquivo de configuração emC:\Program Files\Microsoft SQL Server\MSSQL13.\<InstanceName>\MSSQL\Binn
.BackuptoURL.exe
não é chamado quando se usam as chaves SAS , mas é acionado quando se usa uma chave de acesso . Certifique-se de que utiliza chaves de acesso ou pode receber o seguinte erro:Erro do sistema operacional 50(A solicitação não é suportada.)
Erros e soluções comuns
Questão | Solução |
---|---|
Erro 3063: Falha na gravação no dispositivo de blob de bloco de backup https://storageaccount/container/name.bak . O dispositivo atingiu seu limite de blocos permitidos. |
Para corrigir esse problema, distribua seu backup destino com vários arquivos e certifique-se de usar os seguintes parâmetros no comando de backup: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536 . |
Erro 3035: Backup diferencial falha para um ou vários bancos de dados. | Isso acontece se você configurou de serviço de Backup do Azure para fazer backup de bancos de dados SQL ou de um instantâneo de máquina virtual (VM), que não cria um backup somente cópia, fazendo com que seu plano de manutenção ou os backups sob demanda do trabalho do SQL agent falhem. Para corrigir isso, adicione essas chaves do Registro às VMs que hospedam instâncias do SQL Server na chave do Registro [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] e adicione "USEVSSCOPYBACKUP"="TRUE" . |
Erro 3201: Backup falha com - Erro do sistema operacional 50 (A solicitação não é suportada). | Regenere o token de assinatura de acesso compartilhado (SAS) usando o Gerenciador de Armazenamento: você pode criar uma nova política usando o Gerenciador de Armazenamento do Azure e criar um novo token SAS com essa política do Gerenciador de Armazenamento do Azure. Recrie o de credenciais usando esse novo token SAS gerado a partir do Armazenamento do Azure e tente fazer backup novamente. Para obter mais informações, consulte problemas conhecidos relativos ao BACKUP TO URL. Verifique se o NSG (grupo de segurança de rede) e/ou firewall permite a conexão de entrada e saída nas portas 1433 e 443. |
Erro 3271: Backup falha devido a erro TLS - Backup para URL recebeu uma exceção do ponto de extremidade remoto. | Isso pode acontecer nas versões 2012, 2014 e 2016 do SQL Server. O backup em uma URL de serviço de Armazenamento de Blobs do Microsoft Azure não é compatível com o TLS 1.2 e pode ser corrigido seguindo as instruções no KB4017023. |
Erro 3271: Backup para URL recebeu uma exceção do ponto de extremidade remoto. Mensagem de exceção: O nome remoto não pôde ser resolvido. | Você verá essa mensagem se uma credencial, segredo ou chave SAS incorreta tiver sido usada para configurar o backup. Solte a credencial e recrie-a. Para SQL Server 2012/2014, use a identidade da conta de armazenamento e a chave de acesso e, para SQL Server 2016 e versões posteriores, use SAS. |
Erro 18210: Exceção: O servidor remoto retornou um erro: (400) Solicitação incorreta. | Para resolver, altere a versão mínima do TLS para a conta de armazenamento para 1.0 (Conta de Armazenamento>Configuração>Versão Mínima de TLS), ou habilite a criptografia forte, conforme documentado no KB4017023. |
Mensagem de exceção: O servidor remoto retornou um erro: (412) Atualmente, há uma concessão no blob e nenhuma ID de concessão foi especificada na solicitação. | Identifique os blobs no Explorador de Armazenamento do Azure com um tamanho de 1 TB, quebre a concessão, exclua o blobe tente novamente a operação de backup. |
Erro: O servidor remoto retornou um erro: (403) Proibido. | Recrie a conta de armazenamento, a credencial e o token SAS para resolver o problema. |
Backup para banco de dados de 1 TB falha no SQL Server 2012/2014. | Os backups de 1 TB são uma limitação conhecida em blobs de página antes do SQL Server 2016 (13.x). Use a compactação de backup adicionando a cláusula 'WITH COMPRESSION' à sua instrução de backup T-SQL ou atualize sua instância do SQL Server para o SQL Server 2016 (13.x) e versões posteriores. |
Erro: Backup para URL encontrou uma exceção no endpoint remoto. Mensagem de exceção: O servidor remoto retornou um erro: (416) O intervalo de páginas especificado é inválido. | Você pode ver isso se estiver no SQL Server 2012 (11.x) e no SQL Server 2014 (12.x) e o tamanho do backup aumentar para 1 TB. Distribua os seus arquivos de backup e/ou use a compressão de backup para resolver. |
O backup falhou ao utilizar o plano de manutenção. | Existem alguns bugs com o plano de manutenção. Tente usar o T-SQL para executar seu backup. Se o T-SQL funcionar, você poderá criar um trabalho do SQL Agent a ser executado para fazer backup de seus bancos de dados. |
Backup falhou devido aos limites de VM atingidos. | Se você estiver recebendo erros de que o limite de IOPS/VM do disco foi atingido, os backups podem ficar mais lentos ou falhar. Para monitorar os limites de IOPS/VM, use Azure Monitor Metrics e redimensione a VM/disco, se necessário, para corrigir o problema. |
O servidor remoto retornou um erro: (409) Conflito para SQL Server 2012/2014" | As contas de armazenamento com namespace hierárquico são adequadas para blobs de bloco, não para blobs de página. As contas de armazenamento sem esse recurso não devem ser usadas para BACKUP TO URL no SQL Server 2014 (12.x). |