Exportieren einer Azure SQL-Datenbank in eine BACPAC-DateiExport an Azure SQL database to a BACPAC file

Wenn Sie eine Datenbank zur Archivierung oder zum Verschieben auf eine andere Plattform exportieren müssen, können Sie das Datenbankschema und die Daten in eine BACPAC-Datei exportieren.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. Eine BACPAC-Datei ist eine ZIP-Datei mit der Erweiterung BACPAC. Sie enthält die Metadaten und Daten aus einer SQL Server-Datenbank.A BACPAC file is a ZIP file with an extension of BACPAC containing the metadata and data from a SQL Server database. Eine BACPAC-Datei kann in Azure Blob Storage oder im lokalen Speicher an einem lokalen Standort gespeichert werden und dann zurück in Azure SQL-Datenbank oder in eine lokale Installation von SQL Server importiert werden.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.

Überlegungen beim Exportieren einer Azure SQL-DatenbankConsiderations when exporting an Azure SQL database

  • Damit ein Export hinsichtlich der Transaktionen konsistent ist, müssen Sie entweder sicherstellen, dass während des Exports keine Schreibaktivitäten erfolgen, oder den Export aus einer in Hinblick auf Transaktionen konsistenten Kopie Ihrer Azure SQL-Datenbank durchführen.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.

  • Beim Exportieren in Blobspeicher beträgt die maximale Größe einer BACPAC-Datei 200 GB.If you are exporting to blob storage, the maximum size of a BACPAC file is 200 GB. Führen Sie zum Archivieren einer größeren BACPAC-Datei einen Export in lokalen Speicher durch.To archive a larger BACPAC file, export to local storage.

  • Das Exportieren einer BACPAC-Datei in Azure Storage Premium mit den in diesem Artikel erläuterten Methoden wird nicht unterstützt.Exporting a BACPAC file to Azure premium storage using the methods discussed in this article is not supported.

  • Speicher hinter einer Firewall wird derzeit nicht unterstützt.Storage behind a firewall is currently not supported.

  • Falls der Exportvorgang aus Azure SQL-Datenbank länger als 20 Stunden dauert, wird er unter Umständen abgebrochen.If the export operation from Azure SQL Database exceeds 20 hours, it may be canceled. Um die Leistung während des Exports zu erhöhen, können Sie Folgendes tun:To increase performance during export, you can:

    • Erhöhen Sie vorübergehend Ihre Computegröße.Temporarily increase your compute size.
    • Verhindern Sie jegliche Lese- und Schreibaktivitäten während des Exports.Cease all read and write activity during the export.
    • Verwenden Sie einen gruppierten Index mit Werten ungleich NULL in allen großen Tabellen.Use a clustered index with non-null values on all large tables. Ohne gruppierte Indizes schlägt ein Export, der länger als sechs bis zwölf Stunden dauert, ggf. fehl.Without clustered indexes, an export may fail if it takes longer than 6-12 hours. Dies liegt daran, dass der Exportdienst einen Tabellenscan durchführen muss, um die gesamte Tabelle zu exportieren.This is because the export service needs to complete a table scan to try to export entire table. Eine gute Möglichkeit, um zu ermitteln, ob Ihre Tabellen für den Export optimiert sind, besteht darin, DBCC SHOW_STATISTICS auszuführen und sicherzustellen, dass RANGE_HI_KEY nicht NULL ist und der Wert eine gute Verteilung aufweist.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. Weitere Informationen finden Sie unter DBCC SHOW_STATISTICS.For details, see DBCC SHOW_STATISTICS.

Hinweis

BACPAC-Dateien eignen sich nicht für Backup- und Wiederherstellungsvorgänge.BACPACs are not intended to be used for backup and restore operations. Azure SQL-Datenbank erstellt für jede Benutzerdatenbank automatisch Sicherungen.Azure SQL Database automatically creates backups for every user database. Weitere Informationen finden Sie unter Übersicht über die Geschäftskontinuität und Sicherungen von SQL-Datenbanken.For details, see business continuity overview and SQL Database backups.

Exportieren in eine BACPAC-Datei mithilfe des Azure-PortalsExport to a BACPAC file using the Azure portal

Das Exportieren einer BACPAC-Datei einer Datenbank aus einer verwalteten Instanz mithilfe von Azure PowerShell wird derzeit nicht unterstützt.Exporting a BACPAC of a database from a managed instance using Azure PowerShell is not currently supported. Verwenden Sie stattdessen SQL Server Management Studio oder SQLPackage.Use SQL Server Management Studio or SQLPackage instead.

Hinweis

Computer, die über das Azure-Portal oder PowerShell übermittelte Import-/Exportanforderungen verarbeiten, müssen die BACPAC-Datei sowie die von Data-Tier Application Framework (DacFX) generierten temporären Dateien speichern.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). Der erforderliche Speicherplatz variiert bei Datenbanken mit derselben Größe enorm. Der erforderliche Speicherplatz kann bis zum Dreifachen der Größe der Datenbank betragen.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. Der lokale Speicherplatz von Computern, die die Import-/Exportanforderung ausführen, beträgt nur 450GB.Machines running the import/export request only have 450GB local disk space. Daher kann bei einigen Anforderungen der Fehler There is not enough space on the disk auftreten.As a result, some requests may fail with the error There is not enough space on the disk. In diesem Fall besteht die Problemumgehung darin, „sqlpackage.exe“ auf einem Computer mit ausreichend Speicherplatz auszuführen.In this case, the workaround is to run sqlpackage.exe on a machine with enough local disk space. Es wird empfohlen, SqlPackage zum Importieren oder Exportieren von Datenbanken zu verwenden, die größer als 150GB sind, um dieses Problem zu vermeiden.We encourage using SqlPackage to import/export databases larger than 150GB to avoid this issue.

  1. Um eine Datenbank über das Azure-Portal zu exportieren, öffnen Sie die Seite für Ihre Datenbank, und klicken Sie auf der Symbolleiste auf Exportieren.To export a database using the Azure portal, open the page for your database and click Export on the toolbar.

    Datenbankexport

  2. Geben Sie den Namen der BACPAC-Datei an, und wählen Sie ein vorhandenes Azure-Speicherkonto und einen Container für den Export aus. Geben Sie anschließend die entsprechenden Anmeldeinformationen für den Zugriff auf die Quelldatenbank an.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. Eine SQL-Serveradministratoranmeldung ist hier auch dann erforderlich, wenn Sie der Azure-Administrator sind, weil ein Azure-Administrator keine SQL Server-Administratorberechtigungen hat.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.

    Datenbankexport

  3. Klicken Sie auf OK.Click OK.

  4. Um den Status des Exportvorgangs zu überwachen, öffnen Sie die Seite für den SQL-Datenbank-Server mit der zu exportierenden Datenbank.To monitor the progress of the export operation, open the page for the SQL Database server containing the database being exported. Klicken Sie unter Einstellungen auf Import-/Exportverlauf.Under to Settings and then click Import/Export history.

    Exportverlauf

Exportieren in eine BACPAC-Datei mit dem Hilfsprogramm „SQLPackage“Export to a BACPAC file using the SQLPackage utility

Informationen zum Exportieren einer SQL-Datenbank mit dem Befehlszeilenprogramm SqlPackage finden Sie unter Exportparameter und -eigenschaften.To export a SQL database using the SqlPackage command-line utility, see Export parameters and properties. Das SQLPackage-Hilfsprogramm wird mit den neuesten Versionen von SQL Server Management Studio und SQL Server Data Tools für Visual Studio ausgeliefert. Alternativ dazu können Sie die neueste Version von SqlPackage direkt aus dem Microsoft Download Center herunterladen.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.

Die Verwendung des SQLPackage-Hilfsprogramms wird aus Gründen der Skalierbarkeit und Leistung für die meisten Produktionsumgebungen empfohlen.We recommend the use of the SQLPackage utility for scale and performance in most production environments. Einen Blogbeitrag des SQL Server-Kundenberatungsteams zur Migration mithilfe von BACPAC-Dateien finden Sie unter Migrating from SQL Server to Azure SQL Database using BACPAC Files (Migrieren von SQL Server zu Azure SQL-Datenbank mithilfe von BACPAC-Dateien).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.

In diesem Beispiel wird gezeigt, wie eine Datenbank mithilfe von „SqlPackage.exe“ mit universeller Active Directory-Authentifizierung exportiert wird: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"

Exportieren in eine BACPAC-Datei mit SQL Server Management Studio (SSMS)Export to a BACPAC file using SQL Server Management Studio (SSMS)

Die neuesten Versionen von SQL Server Management Studio enthalten einen Assistenten zum Exportieren einer Azure SQL-Datenbank in eine BACPAC-Datei.The newest versions of SQL Server Management Studio provides a wizard to export an Azure SQL database to a BACPAC file. Weitere Informationen finden Sie unter Exportieren einer Datenebenenanwendung.See the Export a Data-tier Application.

Exportieren in eine BACPAC-Datei mit PowerShellExport to a BACPAC file using PowerShell

Hinweis

Für eine verwaltete Instanz wird das Exportieren einer Datenbank in eine BACPAC-Datei mit Azure PowerShell derzeit nicht unterstützt.A managed instance does not currently support exporting a database to a BACPAC file using Azure PowerShell. Verwenden Sie zum Exportieren einer verwalteten Instanz in eine BACPAC-Datei SQL Server Management Studio oder SQLPackage.To export a managed instance into a BACPAC file, use SQL Server Management Studio or SQLPackage.

Verwenden Sie das Cmdlet New-AzSqlDatabaseExport, um eine Anforderung für einen Datenbankexport beim Azure SQL-Datenbank-Dienst einzureichen.Use the New-AzSqlDatabaseExport cmdlet to submit an export database request to the Azure SQL Database service. Je nach Größe Ihrer Datenbank kann es einige Zeit dauern, bis der Exportvorgang abgeschlossen ist.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

Zum Überprüfen des Status der Exportanforderung verwenden Sie das Cmdlet Get-AzSqlDatabaseImportExportStatus.To check the status of the export request, use the Get-AzSqlDatabaseImportExportStatus cmdlet. Wenn Sie dieses Cmdlet direkt nach der Anforderung ausführen, wird in der Regel Status: InProgress zurückgegeben.Running this immediately after the request usually returns Status: InProgress. Wenn Status: Succeeded angezeigt wird, ist der Export abgeschlossen.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

Nächste SchritteNext steps