Partilhar via


Quickstart: Importar um ficheiro BACPAC para uma base de dados no Azure SQL Database ou Azure SQL Managed Instance

Aplica-se a: Azure SQL DatabaseAzure SQL Managed Instance

Podes importar uma base de dados SQL Server para Azure SQL Database ou SQL Managed Instance usando um ficheiro .bacpac. Pode importar os dados a partir de um ficheiro BACPAC armazenado no Azure Blob storage (apenas armazenamento padrão) ou a partir de armazenamento local num local local. Para maximizar a velocidade de importação fornecendo mais e mais rápidos recursos, dimensione seu banco de dados para uma camada de serviço mais alta e calcule o tamanho durante o processo de importação. Em seguida, você pode reduzir a escala depois que a importação for bem-sucedida.

Usar o portal do Azure

Veja este vídeo para ver como importar a partir de um ficheiro BACPAC no portal do Azure ou continue a ler:

  • O portal Azureonly suporta a criação de uma base de dados única em Azure SQL Database e only a partir de um ficheiro BACPAC armazenado no armazenamento Azure Blob.
  • Para migrar uma base de dados para Azure SQL Managed Instance a partir de um ficheiro BACPAC, use SQL Server Management Studio ou a utilidade de linha de comandos SqlPackage. O portal Azure e o Azure PowerShell não são atualmente suportados.

Advertência

Ficheiros BACPAC com mais de 150 GB gerados pelo SqlPackage podem falhar ao serem importados do portal Azure ou do Azure PowerShell, apresentando uma mensagem de erro que indica File contains corrupted data. Isto resulta de um problema conhecido e a solução alternativa é usar a SqlPackage ferramenta de linha de comandos para importar o ficheiro BACPAC. Para mais informações, consulte SqlPackage e o registo de problemas .

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, bem como 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 o utilitário de linha de comando SqlPackage em uma máquina com espaço em disco local suficiente. Recomendamos 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 ficheiro BACPAC para uma nova base de dados única usando o portal Azure, abra a página do servidor apropriada e depois, na barra de ferramentas, selecione Importar base de dados.

    Captura de ecrã do portal Azure, página de visão geral do servidor lógico, com importação de base de dados selecionada.

  2. Selecione Selecione backup. Escolha a conta de armazenamento que aloja a sua base de dados e depois selecione o ficheiro BACPAC de onde importar.

  3. Especifique o novo tamanho da base de dados (normalmente igual à origem) e forneça as credenciais do SQL Server de destino. Para uma lista de possíveis valores para uma nova base de dados em Azure SQL Database, veja Criar Base de Dados.

    Captura de ecrã do portal Azure, Página de importação da base 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 bem-sucedida, a importação tem um status Concluída.

    Captura de ecrã do portal Azure, página de visão geral do servidor, mostrando o estado da importação da base 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 gerida (versão de pré-visualização)

Azure SQL Database suporta a importação de um ficheiro BACPAC usando autenticação managed identity. Esta opção permite operações de importação totalmente livres de credenciais e é recomendada para ambientes que desativam a autenticação SQL ou aplicam autenticação apenas Microsoft Entra.

Pode importar uma base de dados para uma nova base de dados ou para uma base de dados vazia existente.

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

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

Não há suporte para os seguintes cenários:

  • Operações de importação entre inquilinos.
  • Identidade gerida atribuída apenas no nível da base de dados.

Observação

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

Usar SqlPackage

Para importar uma base de dados SQL Server usando a utilidade de linha de comandos SqlPackage, consulte parâmetros e propriedades de importação importação. Pode descarregar o mais recente SqlPackage 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 um blogue da Equipa de Assessoria a Clientes do SQL Server sobre a migração usando ficheiros BACPAC, veja migrar de SQL Server para Azure SQL Database usando ficheiros BACPAC.

O modelo de provisionamento baseado em DTU oferece suporte a valores de tamanho máximo de banco de dados selecionados para cada camada. Ao importar um banco de dados usar um destes valores suportados.

O comando SqlPackage a seguir importa o banco de dados AdventureWorks2008R2 do armazenamento local para um servidor SQL lógico chamado mynewserver20170403. Ele cria um novo 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 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 ligar ao Azure SQL Database por trás de um firewall corporativo, o firewall deve ter a porta 1433 aberta. Para ligar-se a SQL Managed Instance, deve ter uma ligação ponto-a-site ou uma ligação de Rota Expressa.

Como alternativa ao nome de utilizador e palavra-passe, pode usar Microsoft Entra ID (anteriormente Azure Active Directory). 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. Substitua os parâmetros de nome de usuário e senha por /ua:true e /tid:"yourdomain.onmicrosoft.com". Este exemplo mostra como importar uma base de dados usando SqlPackage com autenticação Microsoft Entra:

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 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.

Usar o PowerShell

Observação

Azure SQL Managed Instance atualmente não suporta migrar uma base de dados para uma base de dados de instâncias a partir de um ficheiro BACPAC usando Azure PowerShell. Para importar para uma instância gerida por SQL, use o SQL Server Management Studio ou SQLPackage.

Observação

As máquinas que processam pedidos de importação/exportação submetidos através de portal ou PowerShell precisam de armazenar o ficheiro BACPAC, bem como ficheiros temporários gerados pelo Data-Tier Application Framework (DacFX). O espaço em disco necessário varia significativamente entre DBs com o mesmo tamanho e pode levar 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, alguns pedidos 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. Ao importar/exportar bancos de dados maiores que 150GB, use SqlPackage para evitar esse problema.

Importante

O módulo PowerShell Azure Resource Manager (AzureRM) foi obsoleto a 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 Az PowerShell para garantir suporte e atualizações contínuos. O módulo AzureRM não é mais mantido ou suportado. Os argumentos para os comandos no módulo Az PowerShell e nos módulos AzureRM são substancialmente idênticos. Para obter mais informações sobre sua compatibilidade, consulte Apresentando o novo módulo do Az PowerShell.

Utilize o cmdlet New-AzSqlDatabaseImport para submeter um pedido de importação à base de dados 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 oferece suporte a valores de tamanho máximo de banco de dados selecionados para cada camada. Ao importar um banco de dados usar um destes valores suportados.

$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)

Você pode usar 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 é concluída quando você vê Status: Succeeded.

$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 o pedido de importação

Use o Database Operations - Cancel API ou o comando Stop-AzSqlDatabaseActivity PowerShell, como no exemplo a seguir:

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 da nova base de dados

  • O nível de compatibilidade do banco de dados importado é baseado no nível de compatibilidade do banco de dados de origem.

  • Depois de importar seu banco de dados, você pode optar por operá-lo em seu nível de compatibilidade atual ou em um nível superior. Para mais informações sobre as implicações e opções para operar uma base de dados num nível específico de compatibilidade, veja ALTER DATABASE compatibility level. Para informações sobre outras definições ao nível da base de dados relacionadas com níveis de compatibilidade, consulte ALTER DATABASE SCOPED CONFIGURATION.

Limitações

  • Importar para uma base de dados no Elastic Pool não é suportado através 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 usando qualquer método em um único banco de dados e, em seguida, 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 aos serviços do Azure está definido como DESLIGADO. No entanto, pode contornar o problema executando manualmente o SqlPackage a partir de uma VM do Azure, ou realizando a exportação diretamente no seu código usando a API do DacFx.
  • O Import não suporta a especificação de uma redundância de armazenamento de backup ao criar uma nova base de dados, e a base de dados é criada com a redundância de armazenamento de backup geo-redundante predefinida. Para contornar, crie primeiro uma base de dados vazia com a redundância de armazenamento de backup desejada usando o portal Azure ou PowerShell e depois importe o BACPAC para essa base de dados vazia.
  • No momento, não há suporte para armazenamento atrás de um firewall.
  • Durante o processo de importação, não crie uma base de dados com o mesmo nome. O processo de importação cria um novo banco de dados do nome especificado.
  • 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.

Outras ferramentas

Você também pode usar esses assistentes.