Condividi tramite


Esportare in un file BACPAC - Azure SQL Database e Azure SQL Managed Instance

Applies to:Azure SQL DatabaseAzure SQL Managed Instance

Quando è necessario esportare un database per l'archiviazione o lo spostamento in un'altra piattaforma, è possibile esportare lo schema di database e i dati in un file BACPAC. Un file BACPAC è un file ZIP con estensione BACPAC contenente i metadati e i dati del database. Un file BACPAC può essere archiviato nell'archiviazione BLOB di Azure o nella memoria locale in una posizione locale e successivamente importato in Azure SQL Database, Azure SQL Managed Instance o in un'istanza di SQL Server.

Considerazioni

Affinché un'esportazione sia coerente in modo transazionale, è necessario assicurarsi che non si verifichi alcuna attività di scrittura durante l'esportazione o che si stia esportando da una copia coerente a livello di transazione del database.

Se si sta eseguendo l'esportazione nell'archiviazione BLOB, la dimensione massima di un file BACPAC è 200 GB. Per archiviare un file BACPAC di dimensioni maggiori, eseguire l'esportazione in una risorsa di archiviazione locale con SqlPackage.

Importare o esportare un Azure SQL Database usando il collegamento privato è in anteprima.

Il nome del file Azure Storage non può terminare con . e non può contenere caratteri speciali come uno spazio o <, >, *, %, &, :, \, /, ?. Il nome file non deve superare i 128 caratteri in lunghezza.

Se l'operazione di esportazione dura oltre 20 ore, potrebbe essere annullata. Per migliorare le prestazioni durante l'esportazione è possibile:

  • Aumentare temporaneamente le risorse di calcolo.

  • Interrompere tutte le attività di lettura e scrittura durante l'esportazione.

  • Utilizzare un indice cluster con valori non null in tutte le tabelle di grandi dimensioni. Senza indici cluster, l'esportazione potrebbe non riuscire se dovesse durare più di 6 - 12 ore. Questo perché i servizi di esportazione devono completare la scansione della tabella prima di provare a esportarla per intero. Un buon modo per determinare se le tabelle sono ottimizzate per l'esportazione consiste nell'eseguire DBCC SHOW_STATISTICS e assicurarsi che non RANGE_HI_KEY sia Null e che il relativo valore abbia una distribuzione valida. Per informazioni dettagliate, vedere DBCC SHOW_STATISTICS (Transact-SQL).

  • Per i database di dimensioni superiori, l'esportazione/importazione di file BACPAC potrebbe richiedere tempo e potrebbe avere esito negativo per diversi motivi.

Nota

I BACPAC non devono essere usati per le operazioni di backup e ripristino. Azure crea automaticamente i backup per ogni database utente. Per informazioni dettagliate, vedere panoramica continuità aziendale e Backup automatici in Azure SQL Database o Backup automatici in Azure SQL Managed Instance.

Esportare dal portale di Azure

  • È possibile usare il portale di Azure per esportare un file BACPAC di un database in un server logico Azure SQL Database.
  • L'uso del portale di Azure non è attualmente supportato per esportare un file BACPAC di un database da Azure SQL Managed Instance.

Nota

I computer che elaborano le richieste di importazione/esportazione inviate tramite il portale di Azure o PowerShell devono archiviare il file BACPAC e i 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. È possibile ovviare a questo problema eseguendo SqlPackage in un computer con spazio su disco locale sufficiente. Usare l'utilità SQLPackage per importare/esportare database di dimensioni superiori a 150 GB per evitare questo problema.

  1. Per esportare un database usando il portale Azure, aprire la pagina per il database e selezionare Export sulla barra degli strumenti.

    Screenshot che evidenzia il pulsante Esporta.

  2. Specificare il nome file BACPAC, selezionare un account di archiviazione e un contenitore Azure esistenti per l'esportazione e quindi specificare le credenziali appropriate per l'accesso al database di origine. Un login amministratore di SQL Server è necessario anche se sei un amministratore di Azure, poiché ciò non comporta automaticamente permessi amministrativi nel database SQL di Azure o in Azure SQL Managed Instance.

    La schermata mostra la pagina Esporta database con nome utente e password specificati.

  3. Seleziona OK.

  4. Per monitorare lo stato di avanzamento dell'operazione di esportazione, aprire la pagina per il server logico contenente il database da esportare. In Gestione dati, selezionare Cronologia di importazione/esportazione.

Esportare con autenticazione mediante identità gestita (anteprima)

È possibile esportare un database in Azure SQL Database in un file BACPAC usando identità gestita l'autenticazione per eliminare la necessità di fornire password di amministratore SQL o chiavi di accesso alle risorse di archiviazione.

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

Per esportare 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 Archage Blob Data Contributor nell'account di Azure Storage di destinazione. 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.

Nota

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

Utilità SQLPackage

È consigliabile usare l'utilità SQLPackage per la scalabilità e le prestazioni nella maggior parte degli ambienti di produzione. L'esecuzione di più comandi SqlPackage in parallelo per subset di tabelle può accelerare le operazioni di importazione/esportazione.

Per esportare un database SQL tramite l'utilità della riga di comando SQLPackage, vedere la sezione relativa ai Parametri e proprietà dell'esportazione. L'utilità SQLPackage è disponibile per Windows, macOS e Linux.

Questo esempio illustra come esportare un database usando SqlPackage con Active Directory'autenticazione universale:

SqlPackage /a:Export /tf:testExport.bacpac /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /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.

SQL Server Management Studio (SSMS)

SQL Server Management Studio fornisce una procedura guidata per esportare un database in Azure SQL Database o un database SQL Managed Instance in un file BACPAC. Vedi Esportare un'applicazione del livello dati.

PowerShell

L'esportazione di un file BACPAC di un database da Azure SQL Managed Instance con PowerShell non è supportata. Si veda Considerazioni.

Usare il cmdlet New-AzSqlDatabaseExport per inviare una richiesta di esportazione del database al servizio Azure SQL Database. A seconda delle dimensioni del database, l'operazione di esportazione potrebbe richiedere del tempo.

$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
  -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
  -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password

Per controllare lo stato della richiesta di esportazione, usare il cmdlet Get-AzSqlDatabaseImportExportStatus. L'esecuzione di questo cmdlet subito dopo la richiesta restituisce in genere Status: InProgress. Al termine dell'esportazione, il messaggio restituito è Status: Succeeded.

$exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
[Console]::Write("Exporting")
while ($exportStatus.Status -eq "InProgress")
{
    Start-Sleep -s 10
    $exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
    [Console]::Write(".")
}
[Console]::WriteLine("")
$exportStatus

Annullamento della richiesta di esportazione

Usa l'API Operazioni database - Annulla o il comando Stop-AzSqlDatabaseActivity di PowerShell per annullare una richiesta di esportazione. Si riporta un esempio di comando di PowerShell:

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

Nota

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

Limiti

  • L'esportazione di un file BACPAC in Azure archiviazione Premium usando i metodi descritti in questo articolo non è supportata.
  • L'archiviazione protetta da firewall attualmente non è supportata.
  • L'archiviazione non modificabile non è attualmente supportata.
  • Azure SQL Managed Instance attualmente non supporta l'esportazione di un database in un file BACPAC usando il portale di Azure o Azure PowerShell. Per esportare un'istanza gestita in un file BACPAC, usare SQL Server Management Studio (SSMS) o SQLPackage.
  • 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.