Compartilhar via


Guia de Início Rápido: importar um arquivo bacpac para um banco de dados no Banco de Dados SQL do Azure ou na Instância Gerenciada de SQL do Azure

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

Importe um banco de dados do SQL Server para o Banco de Dados SQL do Azure ou para a Instância Gerenciada de SQL usando um arquivo .bacpac. Você pode importar os dados de um arquivo bacpac armazenado no Armazenamento de Blobs do Azure (apenas no armazenamento standard) ou de determinada localização do armazenamento local. Para maximizar a velocidade de importação fornecendo mais recursos e mais rápidos, dimensione seu banco de dados para uma camada de serviço superior e o tamanho da computação durante o processo de importação. Em seguida, você poderá reduzir verticalmente após a importação ser realizada.

Observação

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

Usar o portal do Azure

Assista a este vídeo para ver como importar um arquivo bacpac no portal do Azure ou continue lendo:

O portal do Azure suporta apenas a criação de um banco de dados individual no Banco de Dados SQL do Azure e somente a partir de um arquivo bacpac armazenado no Armazenamento de Blobs do Azure.

Aviso

Os arquivos bacpac com mais de 4 GB gerados a partir do SqlPackage podem falhar na importação do portal do Azure ou do Azure PowerShell com uma mensagem de erro que indica File contains corrupted data.. Isso é resultado de um problema conhecido e a solução alternativa é usar o utilitário de linha de comando SqlPackage para importar o arquivo bacpac. Para obter mais informações, consulte o SqlPackage e o log de problemas.

Para migrar um banco de dados para uma Instância Gerenciada de SQL do Azure por meio de um arquivo bacpac, use o SQL Server Management Studio ou o SQLPackage. No momento, não há suporte para o portal do Azure nem para o Azure PowerShell.

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 fazer a importação de um arquivo bacpac para um novo banco de dados individual usando o portal do Azure, abra a página do servidor apropriada e, na barra de ferramentas, selecione Importar banco de dados.

    Captura de tela da página do portal do Azure Visão geral do servidor lógico, com a importação de banco de dados selecionada.

  2. Escolha Selecionar backup. Escolha a conta de armazenamento que hospeda seu banco de dados e selecione o arquivo bacpac do qual será feita a importação.

  3. Especifique o tamanho do novo banco de dados (normalmente, o mesmo que o original) e forneça as credenciais do SQL Server de destino. Para obter uma lista de valores possíveis para um novo banco de dados do Banco de Dados SQL do Azure, confira Criar Banco de Dados.

    Captura de tela do portal do Azure, página de importação de banco de dados.

  4. Selecione OK.

  5. Para monitorar o progresso de uma importação, abra a página do servidor do banco de dados e, em Configurações, selecione Histórico de importação/exportação. Quando obtiver êxito, a importação terá o status Concluído.

    Captura de tela do portal do Azure, página de visão geral do servidor mostrando o status de importação do banco de dados.

  6. Para verificar se o banco de dados está ativo no servidor, selecione Bancos de dados SQL e verifique se o novo banco de dados está Online.

Usar o SqlPackage

Para importar um Banco de Dados do SQL Server usando o utilitário de linha de comando SqlPackage, confira Importar parâmetros e propriedades. Você pode baixar o SqlPackage mais recente para Windows, macOS ou Linux.

Para escala e desempenho, recomendamos usar o SqlPackage na maioria dos ambientes de produção em vez de usar no portal do Azure. Para ler uma postagem de blog da Equipe de Consultoria ao Cliente do SQL Server sobre a migração usando arquivos BACPAC, confira Migrando do SQL Server para o Banco de Dados SQL do Azure usando arquivos BACPAC.

O modelo de provisionamento baseado em DTU é compatível com valores de tamanho máximo de banco de dados selecionados para cada camada. Ao importar um banco de dados use um desses valores compatíveis.

O comando do SqlPackage a seguir importa o banco de dados AdventureWorks2008R2 do armazenamento local para um servidor SQL lógico chamado mynewserver20170403. Ele cria um banco de dados chamado myMigratedDatabase com uma camada de serviço Premium e um objetivo de serviço P6. Altere esses valores conforme apropriado para o seu ambiente.

SqlPackage /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=<migratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2008R2.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

Importante

Para se conectar ao Banco de Dados SQL do Azure por trás de um firewall corporativo, o firewall precisa ter a porta 1433 aberta. Para se conectar à Instância Gerenciada de SQL, você precisa ter uma conexão ponto a site ou uma conexão do ExpressRoute.

Como alternativa ao nome de usuário e senha, você pode usar o Microsoft Entra ID (anteriormente, Azure Active Directory). Atualmente, o serviço de Importação/Exportação não oferece suporte à autenticação do Microsoft Entra ID quando a MFA é necessária. Substitua os parâmetros de nome de usuário e senha para /ua:true e /tid:"yourdomain.onmicrosoft.com". Este exemplo mostra como importar um banco de dados usando SqlPackage com autenticação do Microsoft Entra:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /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 o Windows, o macOS 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, confira a documentação da extensão DACPAC do SQL Server.

Usar o PowerShell

Observação

Atualmente, a Instância Gerenciada de SQL do Azure não dá suporte à migração de um banco de dados para um banco de dados de instância por meio de um arquivo bacpac usando o Azure PowerShell. Para fazer a importação para uma Instância Gerenciada de SQL, use o SQL Server Management Studio ou o SqlPackage.

Observação

Os computadores que processam as solicitações de importação/exportação enviadas pelo portal ou 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 BDs 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 “Não há espaço suficiente no disco”. Nesse caso, a solução alternativa é executar o SqlPackage em um computador com espaço em disco local suficiente. Ao importar/exportar bancos de dados maiores que 150 GB, use o SqlPackage para evitar esse problema.

Importante

Ainda há suporte para o módulo do ARM (Azure Resource Manager) do PowerShell, mas todo o desenvolvimento futuro destina-se ao módulo Az.Sql. O módulo AzureRM continuará a receber as correções de bugs até pelo menos dezembro de 2020. Os argumentos para os comandos no módulo Az e nos módulos AzureRm são substancialmente idênticos. Para saber mais sobre a compatibilidade entre eles, confira Apresentação do novo módulo Az do Azure PowerShell.

Use o cmdlet New-AzSqlDatabaseImport para enviar uma solicitação de importação de banco de dados para o Azure. Dependendo do tamanho do banco de dados, a importação pode levar algum tempo para ser concluída. O modelo de provisionamento baseado em DTU é compatível com valores de tamanho máximo de banco de dados selecionados para cada camada. Ao importar um banco de dados use um desses valores compatíveis.

$importRequest = New-AzSqlDatabaseImport -ResourceGroupName "<resourceGroupName>" `
    -ServerName "<serverName>" -DatabaseName "<databaseName>" `
    -DatabaseMaxSizeBytes "<databaseSizeInBytes>" -StorageKeyType "StorageAccessKey" `
    -StorageKey $(Get-AzStorageAccountKey `
        -ResourceGroupName "<resourceGroupName>" -StorageAccountName "<storageAccountName>").Value[0] `
        -StorageUri "https://myStorageAccount.blob.core.windows.net/importsample/sample.bacpac" `
        -Edition "Premium" -ServiceObjectiveName "P6" `
        -AdministratorLogin "<userId>" `
        -AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)

Use o cmdlet Get-AzSqlDatabaseImportExportStatus para verificar o progresso da importação. A execução do cmdlet imediatamente após a solicitação geralmente retorna Status: InProgress. A importação estará concluída quando Status: Succeeded for exibido.

$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink

[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress") {
    $importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
    [Console]::Write(".")
    Start-Sleep -s 10
}

[Console]::WriteLine("")
$importStatus

Dica

Para outro exemplo de script, confira Importar um banco de dados de um arquivo BACPAC.

Cancelar a solicitação de importação

Use a API Operações de Banco de Dados – Cancelar ou o comando Stop-AzSqlDatabaseActivity do PowerShell, como no seguinte exemplo:

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

Permissões necessárias para cancelar a importação

Para cancelar a operação de importação, você precisa ser membro de uma das seguintes funções:

Nível de compatibilidade do banco de dados

  • O nível de compatibilidade do banco de dados se baseia no nível de compatibilidade do banco de dados de origem.
  • Após a importação dos dados, é possível operar o banco de dados em seu nível de compatibilidade atual ou em um nível superior. Para obter mais informações sobre as implicações e as opções para a operação de um banco de dados em um nível de compatibilidade específico, consulte nível de compatibilidade de ALTER DATABASE. Consulte também ALTER DATABASE SCOPED CONFIGURATION para obter informações sobre outras configurações de nível de banco de dados relacionadas aos níveis de compatibilidade.

Limitações

  • Não há suporte para a importação de um banco de dados no pool elástico. Você pode importar dados para um banco de dados individual e, em seguida, mover o banco de dados para um pool elástico.
  • O Serviço de Importação/Exportação não funciona quando a opção Permitir acesso aos serviços do Azure está definida como DESATIVADO. No entanto, é possível resolver o problema executando o SqlPackage manualmente em uma VM do Azure ou executando a exportação diretamente no código por meio da API do DACFx.
  • A importação não dá suporte à especificação de uma redundância de armazenamento de backup durante a criação de um banco de dados e cria com a redundância do armazenamento de backup com redundância geográfica padrão. Para resolver isso, primeiro, crie um banco de dados vazio com a redundância de armazenamento de backup desejada usando o portal do Azure ou o PowerShell e importe o bacpac para esse banco de dados vazio.
  • Atualmente, não há suporte para o Armazenamento atrás de um firewall.
  • Durante o processo de importação, não crie um banco de dados com o mesmo nome. O processo de importação cria um novo banco de dados com o nome especificado.
  • 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.

Ferramentas adicionais

Você também pode usar esses assistentes.