Compartilhar via


Backup e restauração para URL usando identidades gerenciadas

Aplica-se a:SQL Server na VM do Azure (somente Windows)

Este artigo ensina como fazer backup e restaurar SQL Server em bancos de dados de de máquinas virtuais (VM) do Azure a partir de uma URL usando identidades gerenciadas do Microsoft Entra.

Visão geral

A partir da CU17 (Atualização Cumulativa 17) do SQL Server 2022, você pode usar identidades gerenciadas com credenciais do SQL Server para fazer backup e restaurar o SQL Server em bancos de dados de VM do Azure a partir do armazenamento de Blob do Azure. Identidades geridas fornecem uma identidade para as aplicações usarem ao se conectarem a recursos que suportam a autenticação do Microsoft Entra.

O uso de identidades gerenciadas nas credenciais para as operações BACKUP TO URL e RESTORE FROM URL T-SQL só é suportado pelo SQL Server em VMs do Azure. Não há suporte para o uso de identidades gerenciadas com o SQL Server local para BACKUP TO URL e RESTORE FROM URL.

Pré-requisitos

  • Um SQL Server numa Azure VM com o SQL Server 2022 CU17 ou posterior configurado com a autenticação do Microsoft Entra.
  • Uma conta do Azure de armazenamento de Blob .
  • Acesso de rede válido ao armazenamento de Blob do Azure e permissões no Firewall do Windows no host para permitir a conexão de saída, além de pontos de extremidade de serviço de conta de armazenamento válidos.
  • A identidade gerenciada principal para o SQL Server na VM do Azure precisa:
    • A ser atribuído com uma identidade gerenciada atribuída pelo usuário ou identidade gerenciada atribuída pelo sistema. Para obter mais informações, consulte Configurar identidades gerenciadas em máquinas virtuais (VMs) do Azure.
    • Para que a função Storage Blob Data Contributor para a identidade gerenciada principal seja atribuída à conta de armazenamento.

Criar uma credencial de servidor usando identidades gerenciadas

Para usar os comandos T-SQL BACKUP DATABASE <database name> TO URL e RESTORE <database name> FROM URL com identidades gerenciadas, você precisa criar uma credencial de servidor que use a identidade gerenciada. O nome da credencial representa a URL de armazenamento do Azure e indica onde o backup do banco de dados será armazenado.

O exemplo a seguir mostra como criar uma credencial para uma identidade gerenciada:

CREATE CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>] 
    WITH IDENTITY = 'Managed Identity'

A cláusula WITH IDENTITY = 'Managed Identity' requer uma identidade gerenciada primária atribuída ao SQL Server na VM do Azure.

Para obter mais informações sobre mensagens de erro que podem ocorrer se a identidade gerenciada principal não for atribuída ou receber permissões adequadas, consulte a seção Mensagens de erro.

BACKUP para URL com uma identidade gerenciada

Depois de criar a credencial, você pode usá-la para fazer backup e restaurar bancos de dados para o armazenamento de Blob do Azure. Verifique se a identidade gerenciada primária para o SQL Server na VM do Azure tem a função Storage Blob Data Contributor atribuída à conta de armazenamento.

O exemplo a seguir mostra como fazer backup de um banco de dados no armazenamento de Blob do Azure usando a credencial de identidade gerenciada:

BACKUP DATABASE [AdventureWorks] 
    TO URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak' 

RESTORE a partir do URL com uma identidade gerenciada

O exemplo a seguir mostra como restaurar um banco de dados do armazenamento de Blob do Azure usando a credencial de identidade gerenciada:

RESTORE DATABASE [AdventureWorks] 
    FROM URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak' 

Mensagens de erro

Indicador de rastreamento 4675 pode ser usado para verificar credenciais criadas com uma identidade gerida. Se a instrução CREATE CREDENTIAL foi executada sem o sinalizador de rastreamento 4675 habilitado, nenhuma mensagem de erro será emitida se a identidade gerenciada primária não estiver definida para o servidor. Para solucionar esse cenário, a credencial deve ser excluída e recriada novamente quando o sinalizador de rastreamento estiver habilitado.

Nenhuma identidade gerenciada principal atribuída

Se uma identidade gerenciada primária não for atribuída ao SQL Server na VM do Azure, as operações de backup e restauração falharão com uma mensagem de erro indicando que a identidade gerenciada não está selecionada.

Msg 37563, Level 16, State 2, Line 14
The primary managed identity is not selected for this server. Enable the primary managed identity for Microsoft Entra authentication for this server. For more information see (https://aka.ms/sql-server-managed-identity-doc).`

Nenhuma função Storage Blob Data Contributor atribuída

Se a identidade gerenciada principal para o SQL Server na VM do Azure não receber a função Storage Blob Data Contributor para a conta de armazenamento, a operação BACKUP falhará com uma mensagem de erro indicando que o acesso foi negado.

Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
BACKUP DATABASE is terminating abnormally. 

Se a identidade gerenciada para o SQL Server na VM do Azure não receber a função Storage Blob Data Contributor para a conta de armazenamento, a operação RESTORE falhará com uma mensagem de erro indicando que o acesso foi negado.

Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
RESTORE DATABASE is terminating abnormally. 

Nome duplicado do banco de dados

Quando o banco de dados original com o mesmo nome existir no armazenamento, o backup de um novo banco de dados para o mesmo caminho de armazenamento falhará com o seguinte erro:

Msg 1834, Level 16, State 1, Line 35
RESTORE DATABASE AdventureWorks 
from URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak' 
Msg 1834, Level 16, State 1, Line 35 
The file 'C:\Server\sqlservr\data\AdventureWorks.mdf' cannot be overwritten.  It is being used by the database 'AdventureWorks'. 
Msg 3156, Level 16, State 4, Line 35 
File 'AdventureWorks' cannot be restored to 'C:\Server\sqlservr\data\AdventureWorks.mdf'. Use WITH MOVE to identify a valid location for the file.

Para resolver esse problema, solte o banco de dados original ou mova os arquivos usados para um local diferente antes de restaurar o banco de dados. Para obter mais informações, consulte Restaurar um banco de dados para um novo local (SQL Server).

Limitações

  • A identidade gerenciada no nível do servidor só tem suporte para o SQL Server na VM do Azure e não no SQL Server local. A identidade gerenciada no nível do servidor não é suportada para Linux.

  • BACKUP TO URL ou RESTORE FROM URL com uma identidade gerenciada só tem suporte para o SQL Server na VM do Azure. BACKUP TO URL ou RESTORE FROM URL não é suportado pelo SQL Server local.

  • Não há suporte para identidades gerenciadas com a FCI (instância de cluster de failover).

  • BACKUP TO URL só pode ser executado com a mesma identidade gerenciada usada para o SQL Server na VM do Azure, independentemente de o servidor ter uma ou várias instâncias do SQL Server na VM.