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 você a fazer backup e a 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 .

BACKUP para uma URL com 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 da URL com uma 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

sinalizador de rastreamento 4675 pode ser usado para verificar as credenciais criadas com uma identidade gerenciada. 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 primária 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 Storage Blob Data Contributor função atribuída

Se a identidade gerenciada primária do SQL Server na VM do Azure não receber a Storage Blob Data Contributor função para a conta de armazenamento, a BACKUP operação 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 do SQL Server na VM do Azure não receber a atribuição da função na conta de armazenamento, a Storage Blob Data Contributor operação 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.

Problemas de rede ou firewall

Se você não configurou o acesso de rede válido ao armazenamento de Blobs do Azure, 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 da conta de armazenamento válidos, 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 você não configurou o acesso de rede válido ao armazenamento de Blobs do Azure, 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 da conta de armazenamento válidos, 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 do banco de dados duplicado

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, 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

  • 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. Não há suporte para a identidade gerenciada no nível do servidor para Linux.

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

  • Não há suporte para identidades gerenciadas com 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 muitas instâncias do SQL Server na VM.