Condividi tramite


Guida introduttiva: Importare un file BACPAC in un database in database SQL di Azure o Istanza gestita di SQL di Azure

Applies to:database SQL di AzureIstanza gestita di SQL di Azure

È possibile importare un database di SQL Server in database SQL di Azure o Istanza gestita di SQL usando un file .bacpac. È possibile importare i dati da un file BACPAC archiviato in Azure Blob Storage (solo archiviazione standard) o dalla memoria 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.

Usare il portale di 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 database SQL di Azure e only da un file BACPAC archiviato nell'archivio BLOB Azure.
  • Per eseguire la migrazione di un database in 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 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à 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 . 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 database SQL di Azure, 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)

database SQL di Azure 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:

  • Un'identità gestita assegnata dall'utente (UAMI) assegnata al server logico per database SQL di Azure.
  • 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 Archiviazione di Azure 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 database SQL di Azure.

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 un blog del Team Consulenza Clienti di SQL Server sulla migrazione tramite file BACPAC, vedere migrazione da SQL Server a database SQL di Azure utilizzando i 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 dall'archivio locale in un server SQL logico denominato . Crea un nuovo database chiamato 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 database SQL di Azure da dietro un firewall aziendale, il firewall deve avere la porta 1433 aperta. Per connettersi a Istanza gestita di SQL, è 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 e . 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

Istanza gestita di SQL di Azure 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 : . È 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 . L'importazione è completa quando viene visualizzato il messaggio .

$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 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 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 risolvere il problema, creare prima di tutto un database vuoto con la ridondanza dell'archiviazione di backup desiderata utilizzando il portale di Azure o PowerShell e quindi importare il file BACPAC.
  • 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.