Importare un file bacpac in un database di Azure SQL Database o in un'istanza gestita di Azure SQL
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. Dopo il completamento dell'importazione, sarà quindi possibile ridimensionare.
Nota
Importa ed esporta tramite collegamento privato è disponibile in anteprima.
Usare il 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'archiviazione 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 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 per oltre 150 GB potrebbero non riuscire a eseguire l'importazione dal portale di Azure o da 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
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 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.
Per eseguire l'importazione da un file bacpac in un nuovo database singolo usando il portale di Azure, aprire la pagina del server appropriato, quindi selezionare Importa database sulla barra degli strumenti.
Scegliere Seleziona backup. Scegliere l'account di archiviazione che ospita il database, quindi selezionare il file bacpac da cui eseguire l’importazione.
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.
Seleziona OK.
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.
Per verificare che il database sia attivo sul server, selezionare Database SQL e verificare che il nuovo database sia Online.
Utilizzo 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 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 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.
In alternativa a nome utente e password, è possibile usare Microsoft Entra ID (in precedenza, Azure Active Directory). Attualmente, il servizio di importazione/esportazione non supporta l'autenticazione con ID Entra Microsoft 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"
Azure Data Studio
Azure Data Studio è uno strumento gratuito open source disponibile per Windows, macOS e Linux. L'estensione "SQL Server dacpac" fornisce un'interfaccia guidata per le operazioni SqlPackage, tra cui l'esportazione e l'importazione. Per altre informazioni sull'installazione e l'uso dell'estensione vedere la documentazione dell'estensione dacpac di SQL Server.
Utilizzare PowerShell
Nota
Un'istanza gestita di SQL di Azure 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
Nei computer che elaborano le richieste di importazione ed esportazione inviate tramite il portale 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 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 restituendo l'errore "Lo spazio su disco non è sufficiente". È 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 Azure Resource Manager (AzureRM) di PowerShell è stato dichiarato obsoleto 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 database ad Azure. A seconda delle dimensioni del database, l'importazione può richiedere del tempo. Il modello di provisioning basato su DTU (unità di lavoro database) 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 Importare un database da un file BACPAC.
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:
- Ruolo Collaboratore SQL DB o
- Ruolo di controllo degli accessi basato sul ruolo personalizzato di Azure (RBAC) con autorizzazione
Microsoft.Sql/servers/databases/operations
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 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 relative ai livelli di compatibilità.
Limiti
- L'importazione in un database nel pool elastico non è supportata tramite il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure. 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 di importazione/esportazione non funziona quando l'opzione Consenti l'accesso a Servizi di Azure è disattivata. È però possibile aggirare il problema eseguendo manualmente SqlPackage 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.
- 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 di importazione/esportazione non supporta l'autenticazione con ID Entra Microsoft quando è necessaria l'autenticazione MFA.
- I servizi di importazione/esportazione supportano solo l'autenticazione SQL e l'ID Microsoft Entra. Importazione/Esportazione non è compatibile con la registrazione dell'applicazione Microsoft Identity.
Strumenti aggiuntivi
È anche possibile usare queste procedure guidate.
- La procedura guidata di importazione dell'applicazione livello dati in SQL Server Management Studio.
- Importazione/Esportazione guidata SQL Server.
Contenuto correlato
- Per informazioni su come connettersi ed eseguire query su database SQL di Azure da Azure Data Studio, vedere Avvio rapido: usare Azure Data Studio per connettersi ed eseguire query su database SQL di Azure.
- Per informazioni su come connettersi ed eseguire query su database SQL di Azure, vedere Avvio rapido: database SQL di Azure: usare SQL Server Management Studio per connettersi ed eseguire query sui dati.
- Per informazioni sull'uso di file .bacpac per la migrazione, vedere l'articolo Migrazione da SQL Server al database SQL di Azure con file BACPAC del blog del Customer Advisory Team di SQL Server.
- Per una descrizione dell'intero processo di migrazione del database SQL Server, con raccomandazioni sulle prestazioni, vedere Migrazione di un database SQL Server al database SQL di Azure.
- Per informazioni su come gestire e condividere chiavi di archiviazione e firme di accesso condiviso in modo sicuro, vedere Guida alla sicurezza di Archiviazione di Azure.