Backup e restauração para URL usando identidades gerenciadas

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

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

Visão geral

A partir da Atualização Cumulativa 17 (CU17) do SQL Server 2022, você pode usar identidades gerenciadas com credenciais do SQL Server para fazer backup e restaurar o SQL Server de bancos de dados de VM do Azure a partir do Armazenamento de Blobs do Azure. As identidades gerenciadas fornecem uma identidade para os aplicativos usarem ao se conectarem a recursos que oferecem suporte à autenticação do Microsoft Entra.

Pré-requisitos

Criar uma credencial de servidor usando identidades gerenciadas

Para usar os comandos T-SQL e BACKUP DATABASE <database name> TO URL com identidades RESTORE <database name> FROM URL 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 é 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 WITH IDENTITY = 'Managed Identity' cláusula 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 primária não for atribuída ou tiver permissões adequadas, consulte a seção Mensagens de erro .

Fazer BACKUP para uma URL usando uma identidade gerenciada

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

O exemplo a seguir mostra como fazer backup de um banco de dados no Armazenamento de Blobs 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'

RESTAURAR a partir de URL utilizando identidade gerenciada

O exemplo a seguir mostra como restaurar um banco de dados do Armazenamento de Blobs 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

Use o sinalizador de rastreamento 4675 para verificar as credenciais criadas com uma identidade gerenciada. Se você executar a instrução sem habilitar o CREATE CREDENTIAL sinalizador de rastreamento 4675, nenhuma mensagem de erro será retornada se a identidade gerenciada primária não estiver definida para o servidor. Para solucionar esse cenário, você deve excluir e recriar a credencial depois que o sinalizador de rastreamento estiver habilitado.

Nenhuma identidade gerenciada primária atribuída

Se você não atribuir uma identidade gerenciada primária ao SQL Server na VM do Azure, as operações de backup e restauração falharão com uma mensagem de erro que indica 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 Storage Blob Data Contributor função atribuída

Se você não atribuir a Storage Blob Data Contributor função à identidade gerenciada primária para o SQL Server na VM do Azure, a BACKUP operação falhará com uma mensagem de erro que indica 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 você não atribuir a Storage Blob Data Contributor função à identidade gerenciada do SQL Server na VM do Azure, a RESTORE operação falhará com uma mensagem de erro que indica 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.

Problemas de rede ou firewall

Se você não configurar o acesso de rede válido ao Armazenamento de Blobs do Azure e as permissões do Firewall do Windows no host, para permitir a conexão de saída e os pontos de extremidade de serviço de conta de armazenamento válidos não estiverem configurados, a BACKUP operação falhará com uma mensagem de erro que indica 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 você não configurar um acesso de rede válido ao Armazenamento Blob do Azure e as permissões do Firewall do Windows no host para permitir a conexão de saída, e se os pontos de extremidade de serviço de conta de armazenamento válidos não estiverem configurados, a operação RESTORE falhará com uma mensagem de erro que indica 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 do banco de dados duplicado

Quando o banco de dados original com o mesmo nome existe no armazenamento, a restauração de um novo banco de dados para o mesmo caminho de armazenamento falha 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, exclua 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

  • O SQL Server na VM do Azure dá suporte à identidade gerenciada no nível do servidor, mas o SQL Server local não. O Linux não dá suporte à identidade gerenciada no nível do servidor.

  • O SQL Server na VM do Azure suporta BACKUP TO URL e RESTORE FROM URL com uma identidade gerenciada a partir do SQL Server 2022 CU17. O SQL Server no local dá suporte BACKUP TO URL ou RESTORE FROM URL com uma identidade gerenciada começando com o SQL Server 2025.

  • A FCI (instância de cluster de failover) não dá suporte a identidades gerenciadas.

  • Você só pode executar BACKUP TO URL usando a mesma identidade gerenciada usada para o SQL Server em uma VM do Azure, se o servidor tem uma ou várias instâncias do SQL Server na VM.