Eseguire l'esportazione in un file BACPAC - Database SQL di Azure e Istanza gestita di SQL di Azure

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

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. È possibile memorizzare il file BACPAC in Archivio BLOB di Azure o in un archivio locale e successivamente importarlo nuovamente in database SQL di Azure, Istanza gestita di SQL di Azure o Istanza di SQL Server.

Considerazioni

  • Perché un'esportazione sia coerente dal punto di vista della transazione, è necessario assicurarsi che non abbiano luogo attività di scrittura durante l'esportazione o che l'esportazione sia eseguita da una copia coerente dal punto di vista della transazione dal 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.

  • Il nome del file di archiviazione di Azure non può terminare con . o contenere caratteri speciali come spazi 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 dimensioni 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 modo valido di determinare se le tabelle sono ottimizzate per l'esportazione consiste nell'eseguire DBCC SHOW_STATISTICS e verificare che il parametro RANGE_HI_KEY non sia invalido e il relativo valore abbia distribuzione valida. Per i dettagli, vedere DBCC SHOW_STATISTICS.
  • 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 sono destinati a essere utilizzati per il backup e le operazioni di ripristino. Il database di Azure crea automaticamente i backup per ogni database utente. Per informazioni dettagliate, vedere Panoramica della continuità aziendale e Backup automatizzati in database SQL di Azure o Backup automatizzati in Istanza gestita di SQL di Azure.

Nota

Importa ed esporta tramite collegamento privato è disponibile in anteprima.

Il portale di Azure

L'esportazione di file BACPAC di un database da Istanza gestita di SQL di Azure tramite il portale di Azure non è attualmente supportata. Si veda Considerazioni.

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. È possibile ovviare a questo problema eseguendo SqlPackage 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 esportare un database con il portale di Azure, aprire la pagina relativa al database e selezionare Esporta sulla barra degli strumenti.

    Screenshot that highlights the Export button.

  2. Specificare il nome del file BACPAC, selezionare un account di archiviazione di Azure esistente e un contenitore per l'esportazione, quindi fornire le credenziali appropriate per l'accesso al database di origine. In questo caso è necessario un accesso da amministratore di SQL Server anche se si è amministratori di Azure, poiché essere amministratore di Azure non equivale ad averne l’autorizzazione in database SQL di Azure o Istanza gestita di SQL di Azure.

    Screenshot shows the Export Database page with username and password specified.

  3. Selezionare 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.

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. È disponibile l’utilità SQLPackage per Windows, macOS e Linux.

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

SqlPackage /a:Export /tf:testExport.BACPAC /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /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 sull'uso dell'estensione vedere l'estensione dacpac di SQL Server.

SQL Server Management Studio (SSMS)

SQL Server Management Studio offre una procedura guidata per esportare un database in database SQL di Azure o Istanza gestita di SQL in un file BACPAC. Vedere Esportazione guidata applicazione livello dati.

PowerShell

L'esportazione di file BACPAC di un database da Istanza gestita di SQL di Azure tramite PowerShell non è supportata. Si veda Considerazioni.

Usare il cmdlet New-AzSqlDatabaseExport per inviare una richiesta di esportazione database al servizio database SQL di Azure. 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

Usare Operazioni database - API Cancel 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 ricoprire uno dei ruoli seguenti:

Limiti

  • L'esportazione di un file BACPAC in Archiviazione Premium di Azure usando i metodi descritti in questo articolo non è supportata.
  • L'archiviazione protetta da firewall attualmente non è supportata.
  • L'archiviazione non modificabile non è attualmente supportata.
  • Istanza gestita di SQL di Azure non supporta attualmente l'esportazione di un database in un file BACPAC tramite 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 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.