Avvio rapido: Importare un file BACPAC in un database in Database SQL di Azure o in Istanza gestita di SQL di Azure

Si applica a: Database SQL di Azure Istanza gestita di SQL di Azure

È possibile importare un database SQL Server in Database SQL di Azure o in Istanza gestita di SQL usando un file BACPAC. È possibile importare i dati da un file BACPAC archiviato in un archiviazione BLOB di Azure (solo archiviazione Standard) o da una risorsa di archiviazione locale in una posizione 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. Al termine dell'importazione, sarà quindi possibile ridurre le caratteristiche.

Nota

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

Importante

Dopo aver importato il database, è possibile scegliere di usare il database al livello di compatibilità corrente (livello 100 per il database AdventureWorks2008R2) o a un livello superiore. Per altre informazioni sulle implicazioni e le opzioni per il funzionamento di un database a un livello di compatibilità specifico, vedere ALTER DATABASE Compatibility Level (Livello di compatibilità ALTER DATABASE). Vedere anche ALTER DATABASE SCOPED CONFIGURATION per informazioni sulle impostazioni a livello di database aggiuntive relative ai livelli di compatibilità.

Uso del portale di Azure

Guardare questo video per informazioni su come eseguire l'importazione da un file BACPAC nel portale di Azure oppure continuare a leggere:

Il portale di Azure supporta solo la creazione di un database singolo nel database SQL di Azure e solo da un file BACPAC salvato nell'archivio BLOB di Azure.

Per eseguire la migrazione di un database in un'istanza gestita di SQL di Azure da un file BACPAC, usare SQL Server Management Studio o SqlPackage. L'uso del portale di Azure o di Azure PowerShell non è attualmente supportato.

Nota

Nei computer che elaborano le richieste di importazione ed esportazione inviate tramite il portale di Azure o PowerShell deve essere archiviato il file BACPAC, oltre ai file temporanei generati da Data-Tier Application Framework (DacFX). Lo spazio su disco necessario varia significativamente tra i database con le stesse dimensioni. Potrebbe essere necessario spazio su disco fino a 3 volte la dimensione del database. I computer che eseguono la richiesta di importazione/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. È possibile ovviare a questo problema eseguendo sqlpackage.exe in un computer con spazio su disco locale sufficiente. Per evitare il problema, è consigliabile usare SqlPackage per importare/esportare database di dimensioni superiori a 150 GB.

  1. Per eseguire l'importazione da un file BACPAC in un nuovo database singolo usando il portale di Azure, aprire la pagina del server appropriato e quindi selezionare Importa database sulla barra degli strumenti.

    Importazione database 1

  2. Selezionare l'account di archiviazione e il contenitore per il file BACPAC e quindi selezionare il file BACPAC da cui eseguire l'importazione.

  3. Specificare la nuova dimensione del database (generalmente uguale all'origine) e specificare le credenziali dell'istanza SQL Server di destinazione. Per un elenco di valori possibili per un nuovo database in Database SQL di Azure, vedere CREATE DATABASE.

    Importazione database 2

  4. Fare clic su 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.

    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.

Uso di SqlPackage

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

Per la scalabilità e le prestazioni, è consigliabile usare SqlPackage, anziché il portale di Azure, nella maggior parte degli ambienti di produzione. Per informazioni da parte del team di consulenza clienti di SQL Server sull'uso di file BACPAC per la migrazione, vedere l'articolo Migrating from SQL Server to Azure SQL Database using BACPAC Files (Migrazione da SQL Server al database SQL di Azure con file BACPAC) del blog del Customer Advisory Team di SQL Server.

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

Il comando di SqlPackage seguente importa il database AdventureWorks2008R2 dall'archivio locale in un server SQL logico denominato mynewserver20170403. Crea un nuovo database denominato myMigratedDatabase con un livello di servizio Premium e un obiettivo di servizio P6. Modificare questi valori in base alle esigenze specifiche dell'ambiente.

sqlpackage.exe /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 un database SQL di Azure protetto da un firewall aziendale, è necessario che nel firewall sia aperta la porta 1433. Per connettersi a un'istanza gestita di SQL, è necessario disporre di una connessione da punto a sito o una connessione ExpressRoute.

Questo esempio illustra come importare un database usando SqlPackage con l'autenticazione universale di Active Directory.

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

Azure Data Studio

Azure Data Studio è uno strumento gratuito open source ed è disponibile per Windows, Mac e Linux. L'estensione "SQL Server dacpac" fornisce un'interfaccia guidata per le operazioni SqlPackage, incluse l'esportazione e l'importazione. Per altre informazioni sull'installazione e sull'uso dell'estensione, vedere la pagina della documentazione dell'estensione.

Utilizzo di PowerShell

Nota

Un'istanza gestita di SQL non supporta attualmente la migrazione di un database in un database dell'istanza da un file BACPAC tramite 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 3 volte la dimensione del database. I computer che eseguono la richiesta di importazione/esportazione hanno solo 450 GB di spazio su disco locale. Di conseguenza, alcune richieste potrebbero non riuscire con l'errore "Non è disponibile spazio sufficiente sul disco". È possibile ovviare a questo problema eseguendo sqlpackage.exe 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 Azure Resource Manager di PowerShell è ancora supportato, ma tutte le attività di sviluppo future sono incentrate sul modulo Az.Sql. Il modulo AzureRM continuerà a ricevere correzioni di bug almeno fino a dicembre 2020. Gli argomenti per i comandi nei moduli Az e AzureRm sono sostanzialmente identici. Per altre informazioni sulla compatibilità, vedere Introduzione del nuovo modulo Az di Azure PowerShell.

Usare il cmdlet New-AzSqlDatabaseImport per inviare una richiesta di importazione database ad Azure. A seconda delle dimensioni del database, l'importazione può richiedere del tempo. Il modello di provisioning basato su unità di elaborazione di database supporta valori per le dimensioni massime del database specifici 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 "Standard" -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 Importare un database da un file BACPAC.

Annullare la richiesta di importazione

Usare l'API Database Operations - Cancel o il comando PowerShell Stop-AzSqlDatabaseActivity, di seguito è riportato un esempio di comando di PowerShell.

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

Nota

Per annullare l'operazione di importazione, è necessario avere uno dei ruoli seguenti:

Limitazioni

  • L'importazione in un database nel pool elastico non è supportata. È possibile importare i dati in un database singolo e quindi spostare quest'ultimo in un pool elastico.
  • Il servizio di importazione/esportazione non funziona quando l'opzione Consenti l'accesso a Servizi di Azure è disattivata. È tuttavia possibile risolvere il problema eseguendo manualmente sqlpackage.exe da una macchina virtuale di Azure o eseguendo l'esportazione direttamente nel codice usando l'API DacFx.
  • L'importazione non supporta la specifica di una ridondanza di archiviazione di backup durante la creazione di un nuovo database, quindi viene usata la ridondanza geografica predefinita. 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, quindi importare il file BACPAC in questo database vuoto.
  • L'archiviazione protetta da firewall attualmente non è supportata.

Strumenti aggiuntivi

È anche possibile usare queste procedure guidate.

Passaggi successivi