Compartilhar via


Início Rápido: Importar um arquivo BACPAC para um banco de dados em Azure SQL Database ou Azure SQL Managed Instance

Applies to:Azure SQL DatabaseAzure SQL Managed Instance

Você pode importar um banco de dados SQL Server para Azure SQL Database ou SQL Managed Instance usando um arquivo .bacpac. Você pode importar os dados de um arquivo BACPAC armazenado no Armazenamento de Blobs do Azure (somente armazenamento padrão) ou do armazenamento local em um local local. Para maximizar a velocidade de importação fornecendo recursos mais rápidos e em maior quantidade, aumente a escala de seu banco de dados para uma camada de serviço superior e uma capacidade de computação maior durante o processo de importação. Em seguida, você poderá redimensionar após a importação.

Usar o portal do Azure

Assista a este vídeo para ver como importar de um arquivo BACPAC no portal do Azure ou continuar lendo:

  • O portal Azuresomente dá suporte à criação de um único banco de dados no Azure SQL Database e somente de um arquivo BACPAC armazenado no armazenamento de Blobs do Azure.
  • Para migrar um banco de dados para Azure SQL Managed Instance de um arquivo BACPAC, use SQL Server Management Studio ou o utilitário de linha de comando SqlPackage. No momento, não há suporte para o portal Azure e Azure PowerShell.

Aviso

Arquivos BACPAC com mais de 150 GB gerados do SqlPackage podem não importar do portal do Azure ou 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 SqlPackage utilitário de linha de comando para importar o arquivo BACPAC. Para obter mais informações, consulte o SqlPackage e o log de problemas.

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, bem como 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 utilitário de linha de comando sqlPackage em um computador com espaço suficiente em disco local. Incentivamos o uso do utilitário de linha de comando SqlPackage para importar/exportar bancos de dados maiores que 150 GB para evitar esse problema.

  1. Para importar 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 Emportar banco de dados.

    Screenshot do Azure portal, visão geral da página do servidor lógico, com importação de banco de dados selecionada.

  2. Selecione Selecionar backup. Escolha a conta de armazenamento que hospeda seu banco de dados e, em seguida, selecione o arquivo BACPAC do qual importar.

  3. Especifique o novo tamanho do banco de dados (geralmente o mesmo que a origem) e forneça o destino SQL Server credenciais. Para obter uma lista de valores possíveis para um novo banco de dados no Azure SQL Database, consulte Create Database.

    Screenshot do portal 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.

    Screenshot do portal 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.

Importar com autenticação de identidade gerenciada (versão prévia)

Azure SQL Database dá suporte à importação de um arquivo BACPAC usando autenticação de identidade gerenciada. Essa opção habilita operações de importação totalmente livres de credenciais e é recomendada para ambientes que desabilitam a autenticação do SQL ou impõem a autenticação somente Microsoft Entra.

Você pode importar um banco de dados para um novo banco de dados ou para um banco de dados vazio existente.

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

Para importar 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 Reader na conta de Azure Storage de origem. 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.

Os seguintes cenários não têm suporte:

  • Operações de importação entre diferentes locatários.
  • Identidade gerenciada atribuída somente no nível do banco de dados.

Observação

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

Usar o SqlPackage

Para importar um banco de dados SQL Server usando o utilitário de linha de comando SqlPackage, consulte 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 o portal Azure. Para acessar um blog da equipe de consultoria de clientes do SQL Server sobre como migrar usando arquivos BACPAC, consulte migrando de SQL Server para Azure SQL Database 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 a Azure SQL Database por trás de um firewall corporativo, o firewall deve ter a porta 1433 aberta. Para se conectar ao SQL Managed Instance, você deve ter uma conexão ponto a site ou uma conexão de rota expressa.

Como alternativa ao nome de usuário e senha, você pode usar Microsoft Entra ID (formerly Azure Active Directory). Atualmente, o serviço de Importação/Exportação não dá suporte à autenticação 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 o SqlPackage com Microsoft Entra autenticação:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /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.

Usar o PowerShell

Observação

Azure SQL Managed Instance atualmente não dá suporte à migração de um banco de dados para um banco de dados de instância de um arquivo BACPAC usando Azure PowerShell. Para importar para uma instância gerenciada de SQL, use SQL Server Management Studio ou SQLPackage.

Observação

Os computadores que processam solicitações de importação/exportação enviadas por meio do portal ou do PowerShell precisam armazenar o arquivo BACPAC, bem como arquivos temporários gerados por Data-Tier DacFX (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: 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. Ao importar/exportar bancos de dados maiores que 150 GB, use o SqlPackage para evitar esse problema.

Importante

O módulo Azure Resource Manager do PowerShell (AzureRM) foi preterido em 29 de fevereiro de 2024. Todo o desenvolvimento futuro deve usar o módulo Az.Sql. Os usuários são aconselhados a migrar do AzureRM para o módulo do Az PowerShell para garantir o suporte e as atualizações contínuas. O módulo AzureRM não é mais mantido ou tem suporte. Os argumentos para os comandos no módulo do Az PowerShell e nos módulos do AzureRM são substancialmente idênticos. Para obter mais informações sobre sua compatibilidade, consulte Apresentando o novo módulo do Az PowerShell.

Use o cmdlet New-AzSqlDatabaseImport para enviar uma solicitação de banco de dados de importação para 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

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 importado 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 operar um banco de dados em um nível de compatibilidade específico, consulte o nível de compatibilidade ALTER DATABASE. Para obter informações sobre outras configurações de nível de banco de dados relacionadas aos níveis de compatibilidade, consulte ALTER DATABASE SCOPED CONFIGURATION.

Limitações

  • Não há suporte para a importação para um banco de dados no pool elástico por meio do portal Azure, Azure PowerShell ou Azure CLI. Em vez disso, crie um banco de dados no pool elástico e use SQLPackage Import, ou importe dados utilizando qualquer método em um único banco de dados e depois mova o banco de dados para um pool elástico.
  • O Serviço de Importação e Exportação não funciona quando Permitir acesso a serviços do Azure é definido como desativado. No entanto, você pode contornar o problema executando manualmente o SqlPackage de uma VM Azure ou executando a exportação diretamente em seu código usando a API da DacFx.
  • A importação não oferece suporte para especificar uma redundância de armazenamento de backup ao criar um novo banco de dados e utiliza a redundância geográfica padrão de armazenamento de backup. Para contornar, primeiro crie um banco de dados vazio com redundância de armazenamento de backup desejada usando Azure portal ou 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 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.

Ferramentas adicionais

Você também pode usar esses assistentes.