Condividi tramite


Guida introduttiva: Importare in un database in Azure SQL Database o Azure SQL Managed Instance un file BACPAC

Applies to:Azure SQL DatabaseAzure SQL Managed Instance

È possibile importare un database di SQL Server in Azure SQL Database o SQL Managed Instance usando un file .bacpac. È possibile importare i dati da un file BACPAC archiviato nell'Archiviazione Blob di Azure (solo archiviazione standard) o dall'archiviazione locale in un percorso locale. Per ottimizzare la velocità di importazione fornendo un maggior numero di risorse più veloci, ridimensionare il database a un livello di servizio e dimensioni di calcolo superiori durante il processo di importazione. Dopo il completamento dell'importazione, sarà quindi possibile ridimensionare.

Usare il portale Azure

Guardare questo video per vedere come importare da un file BACPAC nel portale di Azure o continuare a leggere:

  • Il portale Azureonly supporta la creazione di un database singolo in Azure SQL Database e only da un file BACPAC archiviato nell'archivio BLOB Azure.
  • Per eseguire la migrazione di un database in Azure SQL Managed Instance da un file BACPAC, usare SQL Server Management Studio o l'utilità della riga di comando SqlPackage. Il portale di Azure e Azure PowerShell non sono attualmente supportati.

Avviso

I file BACPAC generati da SqlPackage su 150 GB potrebbero non riuscire a importare dal portale di Azure o Azure PowerShell con un messaggio di errore che indica File contains corrupted data. Questo è il risultato di un problema noto e la soluzione alternativa consiste nell'usare l'utilità SqlPackage della riga di comando per importare il file BACPAC. Per altre informazioni, vedere SqlPackage e il registro dei problemi.

Nota

I computer che elaborano le richieste di importazione/esportazione inviate tramite il portale di Azure o PowerShell devono archiviare il file BACPAC, nonché i file temporanei generati dal framework applicazione Data-Tier (DacFX). Lo spazio su disco necessario varia significativamente tra i database con le stesse dimensioni. Potrebbe essere necessario spazio su disco fino a tre volte la dimensione del database. I computer che eseguono le richieste di importazione ed esportazione hanno solo 450 GB di spazio su disco locale. Di conseguenza, alcune richieste potrebbero non riuscire restituendo l'errore There is not enough space on the disk. In questo caso, la soluzione alternativa consiste nell'eseguire l'utilità della riga di comando SqlPackage in un computer con spazio su disco locale sufficiente. È consigliabile usare l'utilità della riga di comando SqlPackage per importare/esportare database di dimensioni superiori a 150 GB per evitare questo problema.

  1. Per importare da un file BACPAC in un nuovo database singolo usando il portale di Azure, aprire la pagina del server appropriata e quindi selezionare Import database.

    Screenshot del portale di Azure, pagina di panoramica del server logico, con l'importazione del database selezionata.

  2. Scegliere Seleziona backup. Scegliere l'account di archiviazione che ospita il database e quindi selezionare il file BACPAC da cui importare.

  3. Specificare le nuove dimensioni del database (in genere uguali all'origine) e specificare le credenziali di SQL Server di destinazione. Per un elenco dei valori possibili per un nuovo database in Azure SQL Database, vedere Crea database.

    Screenshot del portale di Azure, Pagina importazione database.

  4. Seleziona OK.

  5. Per monitorare lo stato di avanzamento dell'importazione, aprire la pagina del server del database e in Impostazioni selezionare Cronologia importazioni/esportazioni. Se l'operazione ha esito positivo, l'importazione visualizzerà lo stato Completato.

    Screenshot del portale di Azure, pagina di panoramica del server, che mostra lo stato di importazione del database.

  6. Per verificare che il database sia attivo sul server, selezionare Database SQL e verificare che il nuovo database sia Online.

Importazione con autenticazione dell'identità gestita (anteprima)

Azure SQL Database supporta l'importazione di un file BACPAC usando autenticazione gestita. Questa opzione abilita le operazioni di importazione completamente senza credenziali ed è consigliata per gli ambienti che disabilitano l'autenticazione SQL o applicano l'autenticazione solo Microsoft Entra.

È possibile importare un database in un nuovo database o in un database vuoto esistente.

Per un'esercitazione dettagliata, vedere Usare l'identità gestita con importazione ed esportazione (anteprima).

Per importare un file BACPAC usando l'autenticazione dell'identità gestita, è necessaria la configurazione seguente:

  • Una identità gestita assegnata dall'utente (UAMI) assegnata al server logico per Azure SQL Database.
  • Il server ha l'identità gestita configurata come amministratore Microsoft Entra.
  • Un'identità gestita viene assegnata al ruolo Storage Blob Data Reader nell'account di Azure Storage di origine. Questa identità gestita può essere uguale a quella assegnata al server o a una diversa.
  • Il server logico, l'identità gestita e l'account di archiviazione si trovano nello stesso tenant di Microsoft Entra.

Gli scenari seguenti non sono supportati:

  • Operazioni di importazione tra tenant.
  • Identità gestita assegnata solo a livello di database.

Nota

L'importazione con autenticazione dell'identità gestita è attualmente in preview e disponibile solo per Azure SQL Database.

Utilizzo di SqlPackage

Per importare un database SQL Server usando l'utilità della riga di comando SqlPackage, vedere importa parametri e proprietà. È possibile scaricare la versione più recente SqlPackage per Windows, macOS o Linux.

Per la scalabilità e le prestazioni, è consigliabile usare SqlPackage nella maggior parte degli ambienti di produzione anziché usare il portale di Azure. Per il blog del SQL Server Customer Advisory Team sulla migrazione tramite file BACPAC, vedere migrazione da SQL Server al database SQL di Azure usando file BACPAC.

Il modello di provisioning basato su DTU supporta valori specifici per le dimensioni massime del database per ogni livello. Quando si importa un database usare uno di questi valori supportati.

Il comando SqlPackage seguente importa il database AdventureWorks2008R2 dall'archivio locale in un server SQL logico denominato mynewserver20170403. Crea un nuovo database chiamato myMigratedDatabase con un livello di servizio Premium e un obiettivo di servizio P6. Modificare questi valori in base alle esigenze specifiche dell'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

Per connettersi a Azure SQL Database da dietro un firewall aziendale, il firewall deve avere la porta 1433 aperta. Per connettersi a SQL Managed Instance, è necessario disporre di una connessione point-to-site o expressroute.

In alternativa a nome utente e password, è possibile usare Microsoft Entra ID (formerly Azure Active Directory). Attualmente, il servizio Importazione/Esportazione non supporta l'autenticazione Microsoft Entra ID quando è necessaria l'autenticazione MFA. Sostituire i parametri nome utente e password per /ua:true e /tid:"yourdomain.onmicrosoft.com". Questo esempio illustra come importare un database usando SqlPackage con l'autenticazione Microsoft Entra:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

Visual Studio Code

L'estensione MSSQL per Visual Studio Code è un'estensione open source gratuita disponibile per Windows, macOS e Linux. L'estensione include l'esperienza Applicazione livello dati (anteprima) per le operazioni SqlPackage, incluse l'esportazione e l'importazione. Per altre informazioni sull'installazione e l'uso dell'estensione, vedere l'estensione MSSQL per Visual Studio Code.

Utilizzare PowerShell

Nota

Azure SQL Managed Instance attualmente non supporta la migrazione di un database in un database di istanza da un file BACPAC usando Azure PowerShell. Per eseguire l'importazione in un'istanza gestita di SQL, usare SQL Server Management Studio o SQLPackage.

Nota

I computer che elaborano le richieste di importazione/esportazione inviate tramite il portale o PowerShell devono archiviare il file BACPAC, nonché i file temporanei generati da Data-Tier Application Framework (DacFX). Lo spazio su disco necessario varia notevolmente tra i database con le stesse dimensioni. Potrebbe essere necessario spazio su disco fino a tre volte la dimensione del database. I computer che eseguono le richieste di importazione ed esportazione hanno solo 450 GB di spazio su disco locale. Di conseguenza, alcune richieste potrebbero non riuscire con l'errore : There is not enough space on the disk. È possibile ovviare a questo problema eseguendo SqlPackage in un computer con spazio su disco locale sufficiente. Se occorre importare o esportare database di dimensioni superiori a 150 GB, usare SqlPackage per evitare questo problema.

Importante

Il modulo PowerShell Azure Resource Manager (AzureRM) è stato deprecato il 29 febbraio 2024. Tutto lo sviluppo futuro deve usare il modulo Az.Sql. È consigliabile eseguire la migrazione da AzureRM al modulo Az PowerShell per garantire il supporto e gli aggiornamenti continui. Il modulo AzureRM non è più gestito o supportato. Gli argomenti per i comandi nel modulo Az PowerShell e nei moduli AzureRM sono sostanzialmente identici. Per altre informazioni sulla compatibilità, vedere Introduzione al nuovo modulo Az PowerShell.

Usare il cmdlet New-AzSqlDatabaseImport per inviare una richiesta di importazione del database a Azure. A seconda delle dimensioni del database, l'importazione può richiedere del tempo. Il modello di provisioning basato su DTU supporta valori specifici per le dimensioni massime del database per ogni livello. Quando si importa un database usare uno di questi valori supportati.

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

È possibile usare il cmdlet Get-AzSqlDatabaseImportExportStatus per controllare lo stato dell'importazione. L'esecuzione di questo cmdlet subito dopo la richiesta restituisce in genere Status: InProgress. L'importazione è completa quando viene visualizzato il messaggio 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

Suggerimento

Per un altro esempio di script, vedere Usare PowerShell per importare un file BACPAC in un database nel database SQL.

Annullamento della richiesta di importazione

Usa l'API Operazioni Database - Annulla o il comando PowerShell Stop-AzSqlDatabaseActivity, come nell'esempio seguente:

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

Autorizzazioni necessarie per annullare un'importazione

Per annullare l'operazione di importazione è necessario essere membri di uno dei ruoli seguenti:

Livello di compatibilità del nuovo database

  • Il livello di compatibilità del database importato si basa sul livello di compatibilità del database di origine.

  • Dopo aver importato il database, è possibile scegliere di usare il database al livello di compatibilità corrente o a un livello superiore. Per altre informazioni sulle implicazioni e sulle opzioni per l'utilizzo di un database a un livello di compatibilità specifico, vedere Livello di compatibilità ALTER DATABASE. Per informazioni su altre impostazioni a livello di database correlate ai livelli di compatibilità, vedere ALTER DATABASE SCOPED CONFIGURATION.

Limiti

  • L'importazione in un database nel pool elastico non è supportata tramite il portale di Azure, Azure PowerShell o Azure CLI. Creare invece un database nel pool elastico e quindi usare SQLPackage Importo importare dati usando qualsiasi metodo in un singolo database e quindi spostare il database in un pool elastico.
  • Il servizio importazione esportazione non funziona quando l'opzione Consenti l'accesso ai servizi di Azure è impostata su OFF. Tuttavia, è possibile risolvere il problema eseguendo manualmente SqlPackage da una macchina virtuale Azure o eseguendo l'esportazione direttamente nel codice usando l'API DacFx.
  • L'importazione non supporta la specifica della ridondanza dello spazio di archiviazione del backup durante la creazione di un nuovo database e utilizza la ridondanza predefinita dello spazio di archiviazione del backup con ridondanza geografica. Per aggirare il problema, creare prima di tutto un database vuoto con la ridondanza dell'archiviazione di backup desiderata usando il portale di Azure o PowerShell e quindi importare il file BACPAC in questo database vuoto.
  • L'archiviazione protetta da firewall attualmente non è supportata.
  • Durante il processo di importazione, non creare un database con lo stesso nome. Il processo di importazione crea un nuovo database, con il nome specificato.
  • Attualmente, il servizio Importazione/Esportazione non supporta l'autenticazione Microsoft Entra ID quando è necessaria l'autenticazione MFA.
  • I servizi Import\Export supportano solo l'autenticazione SQL e Microsoft Entra ID. Import\Export non è compatibile con la registrazione dell'applicazione Microsoft Identity.

Strumenti aggiuntivi

È anche possibile usare queste procedure guidate.