Partilhar via


Exportar para um ficheiro BACPAC - Azure SQL Database e Azure SQL Managed Instance

Aplica-se a: Azure SQL DatabaseAzure SQL Managed Instance

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 ficheiro BACPAC pode ser armazenado no armazenamento Blob do Azure ou num armazenamento local, e posteriormente importado de volta para Azure SQL Database, Azure SQL Managed Instance ou uma instância de 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.

Importar ou exportar uma Base de Dados SQL do Azure usando uma ligação privada está em versão prévia.

O nome do ficheiro Azure Storage não pode terminar em . e não pode conter caracteres especiais como um carácter 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 a capacidade de 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 forma de determinar se as tuas tabelas estão otimizadas para exportação é executar DBCC SHOW_STATISTICS e garantir que o RANGE_HI_KEY valor não é nulo e que o seu valor tem boa distribuição. Para mais detalhes, veja DBCC SHOW_STATISTICS (Transact-SQL).

  • Para bancos de dados maiores, a exportação/importação do BACPAC pode levar muito tempo e pode falhar por vários motivos.

Observação

Os BACPACs não são destinados a ser usados para operações de backup e restauro. O Azure cria automaticamente backups para todas as bases de dados de utilizadores. Para detalhes, veja business continuity overview e Backups automatizados em Azure SQL Database ou Backups automatizados em Azure SQL Managed Instance.

Exportar a partir do portal Azure

  • Pode usar o portal Azure para exportar um BACPAC de uma base de dados num servidor lógico Azure SQL Database.
  • O uso do portal Azure atualmente não é suportado para exportar um BACPAC de uma base de dados a partir de Azure SQL Managed Instance.

Observação

As máquinas que processam pedidos de importação/exportação submetidos através do portal Azure ou PowerShell precisam de armazenar o ficheiro BACPAC e os ficheiros temporários gerados pelo Data-Tier Application Framework (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. Use o utilitário SQLPackage para importar/exportar bancos de dados maiores que 150 GB para evitar esse problema.

  1. Para exportar uma base de dados usando o portal Azure, abra a página da sua base de dados e selecione Export na barra de ferramentas.

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

  2. Especifique o nome do ficheiro BACPAC, selecione uma conta e contentor de armazenamento Azure existentes para a exportação, e depois forneça as credenciais apropriadas para aceder à base de dados de origem. Aqui é necessário um login de administrador do SQL Server mesmo que seja o administrador do Azure, pois ser administrador do Azure não equivale a ter permissões de administrador em Azure SQL Database ou Azure SQL Managed Instance.

    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.

Exportar com autenticação através de identidade gerida (prévia)

Pode exportar uma base de dados em Azure SQL Database para um ficheiro BACPAC usando autenticação managed identity para eliminar a necessidade de fornecer palavras-passe de administrador SQL ou chaves de acesso ao armazenamento.

Para um tutorial detalhado, consulte Usar identidade gerida com importação e exportação (pré-visualização).

Para exportar um ficheiro BACPAC usando autenticação de identidade gerida, é necessária a seguinte configuração:

  • Uma identidade gerida atribuída pelo utilizador (UAMI) atribuída ao servidor lógico para Azure SQL Database.
  • O servidor tem a identidade gerida configurada como administrador Microsoft Entra.
  • Uma identidade gerida é atribuída ao papel Storage Blob Data Contributor na conta de Azure Storage alvo. Esta identidade gerida pode ser igual à atribuída ao servidor ou diferente.
  • O servidor lógico, a identidade gerida e a conta de armazenamento estão no mesmo Microsoft Entra tenant.

Observação

A exportação com autenticação de identidade gerida está atualmente disponível em prévia e está disponível apenas para Azure SQL Database.

Utilitário SQLPackage

Recomendamos a utilização do utilitário SQLPackage para dimensionamento e desempenho na maioria dos ambientes de produção. 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. A utilidade SQLPackage está disponível para Windows, macOS e Linux.

Este exemplo mostra como exportar uma base de dados usando SqlPackage com 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"

Visual Studio Code

A extensão MSSQL para Visual Studio Code é uma extensão gratuita e de código aberto disponível para Windows, macOS e Linux. A extensão inclui a experiência Data-tier Application (Preview) para operações SqlPaket, incluindo exportação e importação. Para mais informações sobre a instalação e utilização da extensão, consulte a extensão MSSQL para Visual Studio Code.

SQL Server Management Studio (SSMS)

SQL Server Management Studio fornece um assistente para exportar uma base de dados em Azure SQL Database ou uma base de dados SQL Managed Instance para um ficheiro BACPAC. Consulte Exportar um aplicativo da camada de dados.

PowerShell

Exportar um BACPAC de uma base de dados a partir de Azure SQL Managed Instance usando PowerShell não é suportado. Ver Considerações.

Use o cmdlet New-AzSqlDatabaseExport para submeter um pedido de exportação de base de dados ao serviço Azure SQL Database. 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

Observação

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

Limitações

  • Exportar um ficheiro BACPAC para armazenamento premium do Azure usando os métodos discutidos neste artigo não é suportado.
  • No momento, não há suporte para armazenamento atrás de um firewall.
  • Atualmente, não há suporte para armazenamento imutável.
  • Azure SQL Managed Instance atualmente não suporta exportar uma base de dados para um ficheiro BACPAC usando o portal Azure ou Azure PowerShell. Para exportar uma instância gerida para um ficheiro BACPAC, use SQL Server Management Studio (SSMS) ou SQLPackage.
  • Atualmente, o serviço de Importação/Exportação não suporta a autenticação do Microsoft Entra ID quando é necessária a autenticação MFA.
  • Os serviços de importação/exportação suportam apenas autenticação SQL e Microsoft Entra ID. Importar\Exportar não é compatível com o registo de aplicações Microsoft Identity.