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.
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.
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.
Selecione OK.
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:
- A função de Colaborador do Banco de Dados SQL ou
- Uma função RBAC personalizada do Azure com
Microsoft.Sql/servers/databases/operations
permissão
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.
Conteúdos relacionados
- Para saber mais sobre a retenção de backup de longo prazo de um único banco de dados e bancos de dados agrupados como uma alternativa à exportação de um banco de dados para fins de arquivamento, consulte Retenção de backup de longo prazo. Você pode usar trabalhos do SQL Agent para agendar backups de banco de dados somente cópia como uma alternativa à retenção de backup de longo prazo.
- Para saber mais sobre como importar um BACPAC para um banco de dados do SQL Server, consulte Importar um BACPAC para um banco de dados do SQL Server.
- Para saber mais sobre como exportar um BACPAC de um banco de dados do SQL Server, consulte Exportar um aplicativo da camada de dados
- Para saber mais sobre como usar o Serviço de Migração de Dados para migrar um banco de dados, consulte Migrar do SQL Server para o Banco de Dados SQL do Azure offline usando DMS.
- Se você estiver exportando do SQL Server como um prelúdio para a migração para o Banco de Dados SQL do Azure, consulte Migrar um banco de dados do SQL Server para o Banco de Dados SQL do Azure.
- Para saber como gerenciar e compartilhar chaves de armazenamento e assinaturas de acesso compartilhado com segurança, consulte Recomendações de segurança para armazenamento de Blob.