Eseguire l'esportazione in un file BACPAC - Database SQL di Azure e Istanza gestita di SQL di Azure
Si applica a: Database SQL di Azure Istanza 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.
Per esportare un database con il portale di Azure, aprire la pagina relativa al database e selezionare Esporta sulla barra degli strumenti.
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.
Seleziona OK.
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:
- Ruolo Collaboratore SQL DB o
- Ruolo RBAC Azure personalizzato con autorizzazione
Microsoft.Sql/servers/databases/operations
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.
Contenuto correlato
- Per altre informazioni sulla conservazione dei backup a lungo termine dei singoli database e dei database in pool come alternativa all'esportazione di un database per scopi di archiviazione, vedere Conservazione dei backup a lungo termine. È possibile usare processi di SQL Agent per pianificare backup dei database di sola copia come alternativa alla conservazione dei backup a lungo termine.
- Per informazioni sull'importazione di un file BACPAC in un database di SQL Server, vedere Importare un file BACPAC in un database di SQL Server.
- Per altre informazioni sull'esportazione di un file con estensione bacpac da un database di SQL Server, vedere Esportare un'applicazione livello dati.
- Per altre informazioni sull'uso del Servizio Migrazione del database per eseguire la migrazione di un database, vedere Eseguire la migrazione di SQL Server al database SQL di Azure offline con DMS.
- Se si sta eseguendo l'esportazione da SQL Server come preparazione alla migrazione nel database SQL di Azure, vedere Migrare un database SQL Server nel database SQL di Azure.
- Per informazioni su come gestire e condividere chiavi di archiviazione e firme di accesso condiviso in modo sicuro, vedere Consigli di sicurezza per l’archiviazione BLOB.