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 Archivio BLOB di Azure o in un archivio 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.

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.

  • L'archiviazione dietro un firewall non è attualmente supportata.Storage behind a firewall is currently 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 le dimensioni di calcolo.Temporarily increase your compute size.
    • 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

L'esportazione di un BACPAC di un database da un' istanza gestita usando Azure PowerShell non è attualmente supportata.Exporting a BACPAC of a database from a managed instance using Azure PowerShell is not currently supported. In alternativa, usare SQL Server Management Studio o SqlPackage.Use SQL Server Management Studio or SQLPackage instead.

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 dal framework dell'applicazione livello dati (DacFX).Machines processing import/export requests submitted through the Azure portal or PowerShell need to store the BACPAC file as well as temporary files generated by the Data-Tier Application Framework (DacFX). Lo spazio su disco richiesto varia significativamente tra i database con le stesse dimensioni e può richiedere spazio su disco fino a 3 volte la dimensione del database.The disk space required varies significantly among databases with the same size and can require disk space up to 3 times the size of the database. I computer che eseguono la richiesta di importazione/esportazione hanno solo spazio su disco locale 450GB.Machines running the import/export request only have 450GB local disk space. Di conseguenza, alcune richieste potrebbero non riuscire con l' There is not enough space on the diskerrore.As a result, some requests may fail with the error There is not enough space on the disk. In questo caso, la soluzione alternativa consiste nell'eseguire SqlPackage. exe su un computer con sufficiente spazio su disco locale.In this case, the workaround is to run sqlpackage.exe on a machine with enough local disk space. Si consiglia di usare SqlPackage per importare/esportare database di dimensioni superiori a 150 GB per evitare questo problema.We encourage using SqlPackage to import/export databases larger than 150GB to avoid this issue.

  1. 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.

    Esportazione di un database

  2. Specificare il nome del file BACPAC, selezionare un account di archiviazione di Azure esistente e un contenitore per l'esportazione e quindi fornire le credenziali appropriate per l'accesso al database di origine.Specify the BACPAC filename, select an existing Azure storage account and container for the export, and then provide the appropriate credentials for access to the source database. È necessario un account di accesso amministratore di SQL Server anche se si è l'amministratore di Azure, perché un amministratore di Azure non equivale a avere SQL Server autorizzazioni di amministratore.A SQL Server admin login is needed here even if you are the Azure admin, as being an Azure admin does not equate to having SQL Server admin permissions.

    Esportazione di un database

  3. Fare clic su OK.Click OK.

  4. Per monitorare lo stato di avanzamento dell'operazione di esportazione, aprire la pagina per il server di database SQL contenente il database da esportare.To monitor the progress of the export operation, open the page for the SQL Database server containing the database being exported. Passare a Impostazioni e quindi fare clic su Cronologia importazioni/esportazioni.Under to Settings and then click Import/Export history.

    Cronologia esportazioni

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 una procedura guidata per l'esportazione di un database SQL di Azure in un file BACPAC.The newest versions of SQL Server Management Studio provides 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

Nota

Un'istanza gestita non supporta attualmente l'esportazione di un database in un file BACPAC tramite PowerShell.A managed instance does not currently support exporting a database to a BACPAC file using Azure PowerShell. Per esportare un'istanza gestita in un file BACPAC, usare SQL Server Management Studio o SQLPackage.To export a managed instance into a BACPAC file, use SQL Server Management Studio or SQLPackage.

Usare il cmdlet New-AzSqlDatabaseExport per inviare una richiesta di esportazione del database al servizio database SQL di Azure.Use the New-AzSqlDatabaseExport 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-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 .To check the status of the export request, use the Get-AzSqlDatabaseImportExportStatus 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. Quando viene visualizzato Status: Succeeded, l'esportazione è stata completata.When you see Status: Succeeded the export is complete.

$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

Passaggi successiviNext steps