Exportar para um arquivo BACPAC – Banco de Dados SQL do Azure e Instância Gerenciada de SQL do Azure

Aplica-se a: Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Quando for preciso exportar um banco de dados para arquivamento ou para mover para outra plataforma, você pode exportar os dados e o esquema do banco de dados para um arquivo BACPAC. Um arquivo BACPAC é um arquivo ZIP com uma extensão BACPAC que contém os metadados e dados do banco de dados. Um arquivo BACPAC pode ser inserido no Armazenamento de Blobs do Azure ou em uma localização no armazenamento local e depois importado novamente para o Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure ou uma Instância do SQL Server.

Considerações

  • Para que uma exportação seja consistente de forma transacional, você deve assegurar que nenhuma atividade de gravação esteja ocorrendo durante a exportação ou que você esteja exportando de uma cópia consistente de forma transacional de seu banco de dados.

  • Se você estiver exportando para o armazenamento de blobs, o tamanho máximo de um arquivo BACPAC é de 200 GB. Para arquivar um arquivo BACPAC maior, exporte-o para o armazenamento local com o SqlPackage.

  • O nome do arquivo do armazenamento do Azure não pode terminar com . e não pode conter caracteres especiais, como caractere de espaço ou <, >, *, %, &, :, \, /, ?. O comprimento do nome do arquivo deve ser inferior a 128 caracteres.

  • Se a operação de exportação exceder 20 horas, ela poderá ser cancelada. Para aumentar o desempenho durante a exportação, você pode:

    • Aumente temporariamente o tamanho da computação.
    • Interromper toda a atividade de leitura e gravação durante a exportação.
    • Use um índice clusterizado com valores não nulos em todas as tabelas grandes. Sem índices clusterizados, a exportação poderá falhar se demorar mais de 6 a 12 horas. Isso ocorre porque o serviço de exportação precisa concluir a verificação da tabela para tentar exportar a tabela inteira. Uma boa maneira de determinar se as tabelas são otimizadas para exportação é executar DBCC SHOW_STATISTICS e verificar se RANGE_HI_KEY não é nulo e seu valor tem boa distribuição. Para obter detalhes, consulte DBCC SHOW_STATISTICS.
  • Para bancos de dados maiores, a exportação/importação de BACPAC pode levar muito tempo e pode falhar por vários motivos.

Observação

BACPACs não devem ser usados para operações de backup e restauração. O Azure cria automaticamente backups de todos os bancos de dados de usuário. Para obter detalhes, consulte Visão geral da continuidade de negócios e Backups automatizados no Banco de Dados SQL do Azure ou Backups automatizados na Instância Gerenciada SQL do Azure.

Observação

Importar e exportar usando o Link Privado está em versão prévia.

O portal do Azure

Atualmente, não há suporte para a exportação de um BACPAC de um banco de dados da Instância Gerenciada de SQL do Azure usando o portal do Azure. Veja as considerações abaixo.

Observação

Os computadores que processam solicitações de importação/exportação enviadas por meio do portal do Azure ou do PowerShell precisam armazenar o arquivo BACPAC, bem como os arquivos temporários gerados pelo DACFx (Data-Tier Application Framework). O espaço em disco necessário varia significativamente entre os bancos de dados com o mesmo tamanho e pode exigir até três vezes o tamanho do banco de dados. Os computadores que executam a solicitação de importação/exportação só têm 450 GB de espaço em disco local. Como resultado, algumas solicitações podem falhar com o erro There is not enough space on the disk. Nesse caso, a solução alternativa é executar o SqlPackage em um computador com espaço em disco local suficiente. Incentivamos o uso do SQLPackage para importar/exportar bancos de dados maiores que 150 GB a fim de evitar esse problema.

  1. Para exportar um banco de dados usando o portal do Microsoft Azure, abra a página do banco de dados e selecione Exportar na barra de ferramentas.

    Captura de tela que realça o botão Exportar.

  2. Especifique o nome do arquivo BACPAC, selecione uma conta de armazenamento do Azure existente e um contêiner para a exportação, em seguida, forneça as credenciais apropriadas para acessar o banco de dados de origem. Um logon de administrador do SQL Server será necessário aqui mesmo que você seja o administrador do Azure, pois ser um administrador do Azure não equivale a ter permissões de administrador no Banco de Dados SQL do Azure ou na Instância Gerenciada de SQL do Azure.

    A captura de tela mostra a página Exportar banco de dados com nome de usuário e senha especificados.

  3. Selecione OK.

  4. Para monitorar o progresso da operação de exportação, abra a página do servidor que contém o banco de dados que está sendo exportado. Em Gerenciamento de dados, selecione histórico de Importação/Exportação.

Utilitário SQLPackage

Recomendamos o uso do utilitário SQLPackage para escala e desempenho na maioria dos ambientes de produção. Você pode executar vários comandos do SqlPackage em paralelo para subconjuntos de tabelas, a fim de acelerar as operações de importação/exportação.

Para exportar um banco de dados no Banco de Dados SQL usando o utilitário de linha de comando SQLPackage, veja Exportar parâmetros e propriedades. O utilitário SQLPackage está disponível para o Windows, o macOS e o Linux.

Este exemplo mostra como exportar um banco de dados usando o SqlPackage com a Autenticação Universal do Active Directory:

SqlPackage /a:Export /tf:testExport.BACPAC /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

Azure Data Studio

O Azure Data Studio é uma ferramenta gratuita de software livre e está disponível para o Windows, o Mac e o Linux. A extensão "SQL Server dacpac" fornece uma interface de assistente para as operações do SqlPackage, incluindo exportação e importação. Para obter mais informações sobre como instalar e usar a extensão, consulte a extensão DACPAC do SQL Server.

SQL Server Management Studio (SSMS)

O SQL Server Management Studio fornece um assistente para exportar um banco de dados no Banco de Dados SQL do Azure ou um banco de dados da Instância Gerenciada de SQL para um arquivo BACPAC. Consulte Exportar um aplicativo da camada de dados.

PowerShell

Atualmente, não há suporte para a exportação de um BACPAC de um banco de dados da Instância Gerenciada de SQL do Azure usando o PowerShell. Veja as considerações abaixo.

Use o cmdlet New-AzSqlDatabaseExport para enviar uma solicitação de exportação de banco de dados para o serviço de Banco de Dados SQL do Azure. Dependendo do tamanho do banco de dados, a operação de exportação poderá demorar para ser concluída.

$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
  -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
  -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password

Para verificar o status da solicitação de exportação, use o cmdlet Get-AzSqlDatabaseImportExportStatus. Executar esse cmdlet imediatamente após a solicitação geralmente retorna Status: InProgress. Quando você vir Status: Êxito, a exportação estará concluída.

$exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
[Console]::Write("Exporting")
while ($exportStatus.Status -eq "InProgress")
{
    Start-Sleep -s 10
    $exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
    [Console]::Write(".")
}
[Console]::WriteLine("")
$exportStatus

Cancelar a solicitação de exportação

Use a API de Cancelamento – Operações de Banco de Dados ou o comando Stop-AzSqlDatabaseActivity do PowerShell para cancelar uma solicitação de exportar. Aqui está um exemplo de comando do PowerShell:

Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId

Observação

Para cancelar a operação de exportação, você precisará ter uma das seguintes funções:

Limitações

  • Não há suporte para a exportação de um arquivo BACPAC no armazenamento Premium do Azure usando os métodos abordados neste artigo.
  • Atualmente, não há suporte para o Armazenamento atrás de um firewall.
  • No momento, não há suporte para armazenamento imutável.
  • A Instância Gerenciada de SQL do Azure não dá suporte atualmente à exportação de um banco de dados para um arquivo BACPAC usando o Azure PowerShell. Para exportar uma instância gerenciada para um arquivo BACPAC, use o SQL Server Management Studio ou o SQLPackage.
  • Atualmente, o serviço de Importação/Exportação não oferece suporte à autenticação do Microsoft Entra ID quando a MFA é necessária.
  • Os serviços de importação\exportação oferecem suporte apenas à autenticação SQL e ao Microsoft Entra ID. Importar\Exportar não é compatível com o registro do aplicativo Microsoft Identity.