Práticas recomentadas e solução de problemas de backup do SQL Server em URL para o Armazenamento de Blobs do Microsoft Azure

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Este artigo inclui as melhores práticas e dicas de solução de problemas para backup e restaurações SQL Server no Microsoft Armazenamento de Blobs do Azure.

Para obter mais informações sobre como usar Armazenamento de Blobs do Azure para operações de backup ou restauração SQL Server, consulte:

Gerenciar backups

A lista a seguir inclui recomendações gerais para gerenciar backups:

  • Use um nome de arquivo exclusivo para cada backup para evitar sobrescrever acidentalmente os blobs.

  • Ao criar um contêiner, defina o nível de acesso como privado para que somente 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 SQL Server em uma instância de SQL Server em execução em uma máquina virtual 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 assegura 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. Identifique periodicamente backups com falha e exclua os arquivos de blob. Para obter mais informações, consulte Excluir arquivos de blob de backup com concessões ativas.

  • Use a opção WITH COMPRESSION para minimizar os custos de armazenamento e os custos de transação de armazenamento e reduzir o tempo de backup.

  • Defina os argumentos MAXTRANSFERSIZE e BLOCKSIZE como os valores descritos em Backup do SQL Server em URL para o Armazenamento de Blobs do Azure.

  • Você pode fazer backup para bloquear blobs com cada redundância de armazenamento (por exemplo, LRS, ZRS, GRS, RA-GRS e RA-GZRS).

Manipular arquivos grandes

A operação de backup SQL Server usa vários threads para otimizar a transferência de dados para Armazenamento de Blobs do Azure. No entanto, o desempenho depende de 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, teste primeiro a taxa de transferência. O SLA para Armazenamento do Azure estabelece os tempos máximos de processamento que devem ser considerados para blobs.

Use a opção WITH COMPRESSION recomendada na seção Gerenciar Backups ao fazer backup de arquivos grandes.

Solucionar problemas de backup ou restauração da URL

Use as dicas a seguir para solucionar erros ao fazer backup ou restauração de Armazenamento de Blobs do Azure.

Para evitar erros causados por opções sem suporte ou limitações, consulte as limitações e as opções com suporte para os comandos BACKUP e RESTORE em backup e restauração do SQL Server com Armazenamento de Blobs do Azure.

Falha de inicialização

Os backups paralelos no mesmo Blob ocasionam a falha de um dos backups com o erro Falha na inicialização .

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 como fazer backup de um VLDB no Armazenamento de Blobs 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;

O marcador de arquivo da mensagem no dispositivo não está alinhado

Ao fazer a restauração em um backup compactado, você 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.
Re-issue the Restore statement with the same blocksize used to create the backupset: '65536' looks like a possible value.

Para resolver esse erro, reemissue a RESTORE instrução com BLOCKSIZE = 65536.

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: Failed backup activity can result in blobs with active leases.

Se você tentar executar novamente uma instrução de backup, a operação de backup poderá falhar com um erro semelhante à saída a seguir:

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 você tentar executar uma instrução de restauração em um arquivo de blob de backup que tenha uma concessão ativa, a operação de restauração falhará com um erro semelhante à seguinte mensagem:

Exception Message: The remote server returned an error: (409) Conflict.

Quando esse erro ocorrer, exclua os arquivos de blob. Para obter mais informações sobre esse cenário e como corrigir esse problema, consulte Excluir arquivos de blob de backup com concessões ativas.

Erro do sistema operacional 50: não há suporte para a solicitação

Ao fazer backup de um banco de dados, você poderá ver o erro Operating system error 50(The request is not supported.) pelos seguintes motivos:

  • A conta de armazenamento especificada não é Uso Geral V1/V2.
  • O token SAS (assinatura de acesso compartilhado) tem um ? símbolo no início. Em caso afirmativo, remova o símbolo.
  • Você não pode se conectar à conta de armazenamento do computador atual usando Gerenciador de Armazenamento ou SQL Server Management Studio (SSMS).
  • A política atribuída ao token SAS expirou. Crie uma nova política usando 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á ausente no repositório de Certificação Raiz Confiável. Para obter mais informações, consulte Autoridades de Certificação Raiz do Azure.

Erros de autenticação

Fazer backup ou restauração de Armazenamento de Blobs do Azure requer uma credencial que armazena as informações de autenticação. SQL Server 2016 (13.x) e versões posteriores usam um token SAS (assinatura de acesso compartilhado) e o Mecanismo de Banco de Dados do SQL Server corresponde automaticamente à credencial à URL do contêiner.

Falhas relacionadas às credenciais podem produzir as seguintes mensagens de erro:

Número de erro Message
3288 Credential name <mycredential> does not exist or user does not have permission to access it.
3289 A Backup device of type URL was specified without a Credential, Backup/Restore operation cannot proceed.

Para evitar esse problema, crie a credencial caso não exista. Por exemplo:

IF NOT EXISTS (SELECT *
    FROM sys.credentials
    WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>')
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>]
    WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
    SECRET = '<SAS_TOKEN>';

A credencial existe, mas o logon que executa o comando de backup não tem permissões para acessar as credenciais. Use uma conta na função de banco de dados fixa db_backupoperator com as permissões Alterar qualquer credencial.

As informações armazenadas na credencial devem corresponder aos valores de propriedade da conta de armazenamento Azure que você está usando nas operações de backup e restauração.

Erros de proxy

Se você usa servidores proxy para acessar a Internet, talvez veja os seguintes problemas:

Restriçã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 backup para URL usa várias threads e pode exceder este limite. Se esse limite for excedido, o servidor proxy fechará a conexão. Para resolver esse problema, altere as configurações de proxy para que SQL Server não use o proxy. Os exemplos a seguir mostram 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.

Erros e soluções comuns

Problema Solução
Erro 3063: Write to backup block blob device https://storageaccount/container/name.bak failed. Device has reached its limit of allowed blocks. Para corrigir esse problema para backups completos ou diferenciais, distribua seu destino de backup com vários arquivos. Para todos os tipos de backup, use os seguintes parâmetros no comando de backup: COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536. Esse erro também poderá ocorrer se o backup atingir o tamanho máximo com suporte. Por exemplo, em SQL Server 2022 (16.x) e versões anteriores, o tamanho máximo do backup é de 12,8 TB, calculado como 64 faixas × 50.000 blocos × 4 MBMAXTRANSFERSIZE.
Erro 3035: falha no backup diferencial para um ou vários bancos de dados. Esse erro ocorre se você tiver configurado o Backup do Azure para fazer backup dos bancos de dados SQL ou de um instantâneo da VM (máquina virtual), o que não cria um backup somente cópia, causando falha nos backups sob demanda do plano de manutenção ou do trabalho do SQL Agent. Para corrigir esse problema, adicione estas chaves do Registro nas VMs que hospedam instâncias do SQL Server, na chave do Registro [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT], e adicione "USEVSSCOPYBACKUP"="TRUE".
Erro 3201: Cannot open backup device '<url>'. Operating system error 50(The request is not supported.) Regenerar o token SAS usando Gerenciador de Armazenamento: em Gerenciador de Armazenamento do Azure, crie uma nova política e um novo token SAS a partir dessa política. Crie novamente a credencial usando o novo token SAS e tente o backup novamente. Para obter mais informações, consulte Problemas conhecidos com BACKUP TO URL. Verifique se o NSG (grupo de segurança de rede) ou o firewall permite conexão de entrada e saída nas portas 1433 e 443.
Erro 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote name could not be resolved. Você verá essa mensagem se uma credencial incorreta, um segredo ou uma chave SAS tiver sido usada para configurar o backup. Remova e crie a credencial novamente. Para SQL Server 2016 (13.x) e versões posteriores, use SAS.
Erro 3290: Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (400) Bad Request. Para resolver, altere a versão mínima do TLS para a conta de armazenamento para 1.0 (versão mínima do TLS da> da > de armazenamento).
Mensagem de exceção: The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request. Em Gerenciador de Armazenamento do Azure, identifique os blobs de 1 TB, quebre a concessão, exclua o blob e repita a operação de backup.
Erro: The remote server returned an error: (403) Forbidden. A recriação da conta de armazenamento, da credencial e do token SAS deve corrigir o problema.
Falha no backup ao usar um plano de manutenção. Os planos de manutenção podem falhar intermitentemente. Execute o backup equivalente diretamente com o T-SQL. Se o backup em T-SQL for bem-sucedido, agende-o como um trabalho do SQL Server Agent em vez de usar um plano de manutenção.
Falha no backup devido aos limites de VM terem sido atingido. Se você receber erros informando que o limite de IOPS/VM de disco foi atingido, os backups poderão 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.