Esportare un database SQL di Azure in un file BACPACExport an Azure SQL database to a BACPAC file

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.When you need to export a database for archiving or for moving to another platform, you can export the database schema and data to a BACPAC file. Un file BACPAC è un file ZIP con un'estensione bacpac contenente i metadati e dati da un database di SQL Server.A BACPAC file is a ZIP file with an extension of BACPAC containing the metadata and data from a SQL Server database. È possibile memorizzare questo tipo di file in un'archiviazione BLOB di Azure o in un'archiviazione locale e successivamente importarlo nuovamente nel database SQL di Azure o in un'installazione locale di SQL Server.A BACPAC file can be stored in Azure blob storage or in local storage in an on-premises location and later imported back into Azure SQL Database or into a SQL Server on-premises installation.

Importante

La funzionalità di esportazione automatizzata di database SQL di Azure è stata ritirata il 1° marzo 2017.Azure SQL Database Automated Export was retired on March 1, 2017. È possibile usare la conservazione dei backup a lungo termine o Automazione di Azure per archiviare periodicamente i database SQL con PowerShell in base alla pianificazione desiderata.You can use long-term backup retention or Azure Automation to periodically archive SQL databases using PowerShell according to a schedule of your choice. Per un esempio, scaricare lo script di PowerShell di esempio da Github.For a sample, download the sample PowerShell script from Github.

Considerazioni relative all'esportazione di un database SQL di AzureConsiderations when exporting an Azure SQL database

  • Perché un'esportazione sia coerente dal punto di vista transazionale, è necessario assicurarsi che non si verifichino attività di scrittura durante l'esportazione o che l'esportazione sia eseguita da una copia coerente dal punto di vista transazionale del database SQL di Azure.For an export to be transactionally consistent, you must ensure either that no write activity is occurring during the export, or that you are exporting from a transactionally consistent copy of your Azure SQL database.
  • Se si sta eseguendo l'esportazione nell'archiviazione BLOB, la dimensione massima di un file BACPAC è 200 GB.If you are exporting to blob storage, the maximum size of a BACPAC file is 200 GB. Per archiviare un file BACPAC di dimensioni maggiori, eseguire l'esportazione in una risorsa di archiviazione locale.To archive a larger BACPAC file, export to local storage.
  • L'esportazione di un file BACPAC in Archiviazione Premium di Azure usando i metodi descritti in questo articolo non è supportata.Exporting a BACPAC file to Azure premium storage using the methods discussed in this article is not supported.
  • Se l'operazione di esportazione da un database SQL di Azure dura oltre 20 ore, potrebbe essere annullata.If the export operation from Azure SQL Database exceeds 20 hours, it may be canceled. Per migliorare le prestazioni durante l'esportazione è possibile:To increase performance during export, you can:
    • Aumentare temporaneamente il livello di servizio.Temporarily increase your service level.
    • Interrompere tutte le attività di lettura e scrittura durante l'esportazione.Cease all read and write activity during the export.
    • Utilizzare un indice cluster con valori non null in tutte le tabelle di grandi dimensioni.Use a clustered index with non-null values on all large tables. Senza indici cluster, l'esportazione potrebbe non riuscire se dovesse durare più di 6 - 12 ore.Without clustered indexes, an export may fail if it takes longer than 6-12 hours. Questo perché i servizi di esportazione devono completare la scansione della tabella prima di provare a esportarla per intero.This is because the export service needs to complete a table scan to try to export entire table. 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 null e il relativo valore abbia distribuzione valida.A good way to determine if your tables are optimized for export is to run DBCC SHOW_STATISTICS and make sure that the RANGE_HI_KEY is not null and its value has good distribution. Per i dettagli, vedere DBCC SHOW_STATISTICS.For details, see DBCC SHOW_STATISTICS.

Nota

I BACPAC non sono destinati a essere utilizzati per il backup e le operazioni di ripristino.BACPACs are not intended to be used for backup and restore operations. Il database SQL di Azure crea automaticamente i backup per ogni database dell'utente.Azure SQL Database automatically creates backups for every user database. Per altre informazioni, vedere Panoramica sulla continuità aziendale e Backup del database SQL.For details, see Business Continuity Overview and SQL Database backups.

Eseguire l'esportazione in un file BACPAC con il portale di AzureExport to a BACPAC file using the Azure portal

Per esportare un database con il portale di Azure, aprire la pagina relativa al database e fare clic su Esporta sulla barra degli strumenti.To export a database using the Azure portal, open the page for your database and click Export on the toolbar. Specificare il nome del file BACPAC, l'account di archiviazione di Azure, un contenitore per l'esportazione e le credenziali per la connessione al database di origine.Specify the BACPAC filename, provide the Azure storage account and container for the export, and provide the credentials to connect to the source database.

Esportazione di un database

Per monitorare lo stato di avanzamento dell'operazione di esportazione, aprire la pagina per il server logico contenente il database da esportare.To monitor the progress of the export operation, open the page for the logical server containing the database being exported. Scorrere fino a Operazioni e quindi fare clic sulla cronologia di Importazione/Esportazione.Scroll down to Operations and then click Import/Export history.

Cronologia delle esportazioni Stato nella cronologia delle esportazioniexport history export history status

Eseguire l'esportazione in un file BACPAC con l'utilità SQLPackageExport to a BACPAC file using the SQLPackage utility

Per esportare un database SQL tramite l'utilità della riga di comando SqlPackage, vedere la sezione relativa ai parametri e proprietà dell'importazione.To export a SQL database using the SqlPackage command-line utility, see Export parameters and properties. L'utilità SQLPackage viene offerta con le versioni più recenti di SQL Server Management Studio e SQL Server Data Tools per Visual Studio. È tuttavia possibile scaricare la versione più recente di SqlPackage direttamente dall'area download Microsoft.The SQLPackage utility ships with the latest versions of SQL Server Management Studio and SQL Server Data Tools for Visual Studio, or you can download the latest version of SqlPackage directly from the Microsoft download center.

È consigliabile usare l'utilità SQLPackage per la scalabilità e le prestazioni nella maggior parte degli ambienti di produzione.We recommend the use of the SQLPackage utility for scale and performance in most production environments. Per informazioni 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.For a SQL Server Customer Advisory Team blog about migrating using BACPAC files, see Migrating from SQL Server to Azure SQL Database using BACPAC Files.

Questo esempio illustra come esportare un database usando SqlPackage.exe con l'autenticazione universale di Active Directory:This example shows how to export a database using SqlPackage.exe with Active Directory Universal Authentication:

SqlPackage.exe /a:Export /tf:testExport.bacpac /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

Eseguire l'esportazione in un file BACPAC con SQL Server Management Studio (SSMS)Export to a BACPAC file using SQL Server Management Studio (SSMS)

Le versioni più recenti di SQL Server Management Studio includono anche una procedura guidata per l'esportazione di un database SQL di Azure in un file BACPAC.The newest versions of SQL Server Management Studio also provide a wizard to export an Azure SQL Database to a BACPAC file. Vedere Esportazione guidata applicazione livello dati.See the Export a Data-tier Application.

Eseguire l'esportazione in un file BACPAC con PowerShellExport to a BACPAC file using PowerShell

Usare il cmdlet New-AzureRmSqlDatabaseExport per inviare una richiesta di esportazione database al servizio database SQL di Azure.Use the New-AzureRmSqlDatabaseExport cmdlet to submit an export database request to the Azure SQL Database service. A seconda delle dimensioni del database, l'operazione di esportazione potrebbe richiedere molto tempo.Depending on the size of your database, the export operation may take some time to complete.

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

Per verificare lo stato della richiesta di esportazione, usare il cmdlet Get-AzureRmSqlDatabaseImportExportStatus.To check the status of the export request, use the Get-AzureRmSqlDatabaseImportExportStatus cmdlet. L'esecuzione di questo cmdlet subito dopo la richiesta restituisce in genere Status: InProgress.Running this immediately after the request usually returns Status: InProgress. Al termine dell'esportazione, il messaggio restituito è Status: Succeeded.When you see Status: Succeeded the export is complete.

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

Passaggi successiviNext steps