Compartilhar via


Exportar para um arquivo BACPAC – Azure SQL Database e Azure SQL Managed Instance

Applies to:Azure SQL DatabaseAzure SQL Managed Instance

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 armazenado no armazenamento de Blobs Azure ou no armazenamento local em um local e posteriormente importado de volta para Azure SQL Database, Azure SQL Managed Instance ou uma instância 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.

Importar ou exportar um Azure SQL Database usando o Azure Private Link está em versão prévia.

O nome do arquivo Azure Storage não pode terminar com . e não pode conter caracteres especiais, como um 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 a capacidade de processamento.

  • 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 suas tabelas são otimizadas para exportação é executar DBCC SHOW_STATISTICS e garantir que ela RANGE_HI_KEY não seja nula e seu valor tenha uma boa distribuição. Para obter detalhes, consulte DBCC SHOW_STATISTICS (Transact-SQL).

  • 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

OS BACPACs não devem ser usados para operações de backup e restauração. Azure cria automaticamente backups para cada banco de dados do usuário. Para obter detalhes, consulte visão geral da continuidade dos negócios e backups automatizados no Azure SQL Database ou backups automatizados na Instância Gerenciada do Azure SQL.

Exportar do portal Azure

  • Você pode usar o portal Azure para exportar um BACPAC de um banco de dados em um servidor lógico Azure SQL Database.
  • No momento, não há suporte para o uso do portal de Azure para exportar um BACPAC de um banco de dados de Azure SQL Managed Instance.

Observação

Os computadores que processam solicitações de importação/exportação enviadas por meio do portal Azure ou do PowerShell precisam armazenar o arquivo BACPAC e 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. Use o utilitário SQLPackage para importar/exportar bancos de dados maiores que 150 GB para evitar esse problema.

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

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

  2. Especifique o nome de arquivo BACPAC, selecione um Azure conta de armazenamento e um contêiner existentes para a exportação e forneça as credenciais apropriadas para acesso ao banco de dados de origem. Um logon de administrador do SQL Server é necessário aqui mesmo que você seja o administrador Azure, pois ser um administrador 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 de identidade gerenciada (versão prévia)

Você pode exportar um banco de dados no Azure SQL Database para um arquivo BACPAC usando a autenticação de identidade gerenciada para eliminar a necessidade de fornecer senhas de administrador do SQL ou chaves de acesso de armazenamento.

Para obter um tutorial detalhado, consulte Usar identidade gerenciada com importação e exportação (versão prévia).

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

  • Uma identidade gerenciada atribuída pelo usuário (UAMI) designada ao servidor lógico para o Azure SQL Database.
  • O servidor tem a identidade gerenciada configurada como Microsoft Entra administrador.
  • Uma identidade gerenciada é atribuída à função Storage Blob Data Contributor na conta de Azure Storage de destino. Essa identidade gerenciada pode ser a mesma atribuída ao servidor ou a outra.
  • O servidor lógico, a identidade gerenciada e a conta de armazenamento estão no mesmo locatário do Microsoft Entra.

Observação

A exportação com autenticação de identidade gerenciada está atualmente em preview e disponível apenas para Azure SQL Database.

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 Windows, macOS e Linux.

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

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 de software livre e gratuita disponível para Windows, macOS e Linux. A extensão inclui a experiência de aplicativo da camada de dados (versão prévia) para 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 MSSQL para Visual Studio Code.

SQL Server Management Studio (SSMS)

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

PowerShell

Não há suporte para exportar um BACPAC de um banco de dados de Azure SQL Managed Instance usando o PowerShell. Veja as considerações abaixo.

Use o New-AzSqlDatabaseExport cmdlet para enviar uma solicitação de exportação de banco de dados para o serviço Azure SQL Database. 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ê precisa ter uma das seguintes funções:

Limitações

  • Não há suporte para exportar um arquivo BACPAC para Azure armazenamento premium usando os métodos discutidos 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.
  • Azure SQL Managed Instance atualmente não dá suporte à exportação de um banco de dados para um arquivo BACPAC usando o portal Azure ou Azure PowerShell. Para exportar uma instância gerenciada para um arquivo BACPAC, use SQL Server Management Studio (SSMS) ou SQLPackage.
  • Atualmente, o serviço de Importação/Exportação não dá suporte à autenticação Microsoft Entra ID quando a MFA é necessária.
  • Os serviços de Importação\Exportação suportam apenas a autenticação SQL e o Microsoft Entra ID. Import\Export não é compatível com o registro de aplicativo do Microsoft Identity.