Exportar para um ficheiro BACPAC - Base de Dados SQL do Azure e Azure SQL Managed Instance

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

Quando precisar exportar um banco de dados para arquivamento ou para mover para outra plataforma, você pode exportar o esquema e os dados do banco de dados para um arquivo BACPAC . Um arquivo BACPAC é um arquivo ZIP com uma extensão do BACPAC contendo os metadados e dados do banco de dados. Um arquivo BACPAC pode ser armazenado no armazenamento de Blob do Azure ou no armazenamento local em um local local e, posteriormente, importado de volta para o Banco de Dados SQL do Azure, a Instância Gerenciada do SQL do Azure ou uma instância do SQL Server.

Considerações

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

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

  • O nome do arquivo do Armazenamento do Azure não pode terminar com . e não pode conter caracteres especiais, como um caractere de espaço ou <, , , , , , >:/\, , . *%&? O nome do arquivo deve ter menos de 128 caracteres.

  • Se a operação de exportação ultrapassar as 20 horas, poderá ser cancelada. Para aumentar o desempenho durante a exportação, pode:

    • Aumente temporariamente o tamanho da computação.
    • Cesse todas as atividades de leitura e gravação durante a exportação.
    • Use um índice clusterizado com valores não nulos em todas as tabelas grandes. Se não tiver índices em cluster, a exportação poderá falhar se demorar mais de 6-12 horas. Isso ocorre porque o serviço de exportação precisa concluir uma verificação de tabela para tentar exportar a tabela inteira. Uma boa maneira de determinar se suas tabelas estão otimizadas para exportação é executar DBCC SHOW_STATISTICS e certificar-se de que o 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 do BACPAC pode levar muito tempo e pode falhar por vários motivos.

Nota

Os BACPACs não se destinam a ser usados para operações de backup e restauração. O Azure cria automaticamente backups para cada banco de dados de usuários. 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.

Nota

Importar e exportar usando o Private Link está em visualização.

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 SQL do Azure usando o portal do Azure. Ver Considerações.

Nota

As máquinas 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 arquivos temporários gerados pela Estrutura de Aplicativo da Camada de Dados (DacFX). O espaço em disco necessário varia significativamente entre bancos de dados com o mesmo tamanho e pode exigir espaço em disco até três vezes o tamanho do banco de dados. As máquinas que executam a solicitação de importação/exportação têm apenas 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 SqlPackage em uma máquina com espaço em disco local suficiente. Recomendamos o uso do SQLPackage para importar/exportar bancos de dados maiores que 150GB para evitar esse problema.

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

    Screenshot that highlights the Export button.

  2. Especifique o nome do arquivo BACPAC, selecione uma conta de armazenamento do Azure e um contêiner existentes para a exportação e forneça as credenciais apropriadas para acessar o banco de dados de origem. Um logon de administrador do SQL Server é necessário aqui, mesmo se você for 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 do SQL do Azure.

    Screenshot shows the Export Database page with username and password specified.

  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 dimensionamento e desempenho na maioria dos ambientes de produção. Você pode executar vários comandos SqlPackage em paralelo para subconjuntos de tabelas para 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 , consulte Exportar parâmetros e propriedades. O utilitário SQLPackage está disponível para Windows, macOS e Linux.

Este exemplo mostra como exportar um banco de dados usando SqlPackage com Autenticação Universal do Ative 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 código aberto e está disponível para Windows, Mac e Linux. A extensão "SQL Server dacpac" fornece uma interface de assistente para operações SqlPackage, incluindo exportação e importação. Para obter mais informações sobre como instalar e usar a extensão, consulte 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 SQL para um arquivo BACPAC. Consulte Exportar um aplicativo da camada de dados.

PowerShell

Não há suporte para a exportação de um BACPAC de um banco de dados da Instância Gerenciada SQL do Azure usando o PowerShell. Ver Considerações.

Use o cmdlet New-AzSqlDatabaseExport para enviar uma solicitação de banco de dados de exportação para o serviço Banco de Dados SQL do Azure. Dependendo do tamanho do banco de dados, a operação de exportação pode levar algum tempo 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 . A execução desse cmdlet imediatamente após a solicitação geralmente retorna Status: InProgress. Quando você vê Status: Êxito , a exportação é 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 o pedido de exportação

Use o comando Database Operations - Cancel API ou PowerShell Stop-AzSqlDatabaseActivity para cancelar uma solicitação de exportação. Aqui está um exemplo de comando do PowerShell:

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

Nota

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 para o armazenamento premium do Azure usando os métodos discutidos neste artigo.
  • De momento, o armazenamento por trás de uma firewall não é suportado.
  • Atualmente, não há suporte para armazenamento imutável.
  • Atualmente, a Instância Gerenciada SQL do Azure não oferece suporte à exportação de um banco de dados para um arquivo BACPAC usando o portal do Azure ou o Azure PowerShell. Para exportar uma instância gerenciada para um arquivo BACPAC, use o SQL Server Management Studio (SSMS) ou SQLPackage.
  • Atualmente, o serviço de Importação/Exportação não suporta a autenticação de ID do Microsoft Entra quando o MFA é necessário.
  • Os serviços Import\Export suportam apenas a autenticação SQL e o Microsoft Entra ID. Import\Export não é compatível com o registro do aplicativo Microsoft Identity.