Exportieren in eine BACPAC-Datei – Azure SQL-Datenbank und Azure SQL Managed Instance

Gilt für:Azure SQL-DatenbankAzure SQL Managed Instance

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. Eine BACPAC-Datei ist eine ZIP-Datei mit der Erweiterung BACPAC. Sie enthält die Metadaten und Daten aus der Datenbank. 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, Azure SQL Managed Instance oder in eine SQL Server-Instanz importiert werden.

Überlegungen

  • Damit ein Export hinsichtlich der Transaktionen konsistent ist, müssen Sie sicherstellen, dass entweder während des Exports keine Schreibaktivitäten stattfinden, oder dass Sie den Export aus einer transaktionskonsistenten Kopie Ihrer Datenbank durchführen.

  • Beim Exportieren in Blob Storage beträgt die maximale Größe einer BACPAC-Datei 200 GB. Führen Sie zum Archivieren einer größeren BACPAC-Datei einen Export mit SqlPackage in den lokalen Speicher durch.

  • Der Name der Azure Storage-Datei darf nicht auf . enden und darf keine Sonderzeichen wie ein Leerzeichen oder <, >, *, %, &, :, \, / oder ? enthalten. Der Dateiname sollte weniger als 128 Zeichen lang sein.

  • Falls der Exportvorgang länger als 20 Stunden dauert, wird er unter Umständen abgebrochen. Um die Leistung während des Exports zu erhöhen, können Sie Folgendes tun:

    • Erhöhen Sie vorübergehend Ihre Computegröße.
    • Verhindern Sie jegliche Lese- und Schreibaktivitäten während des Exports.
    • Verwenden Sie einen gruppierten Index mit Werten ungleich NULL in allen großen Tabellen. Ohne gruppierte Indizes schlägt ein Export, der länger als sechs bis zwölf Stunden dauert, ggf. fehl. Dies liegt daran, dass der Exportdienst einen Tabellenscan durchführen muss, um die gesamte Tabelle zu exportieren. 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. Weitere Informationen finden Sie unter DBCC SHOW_STATISTICS.
  • Bei größeren Datenbanken kann der BACPAC-Export/-Import sehr lange dauern und aus verschiedenen Gründen zu Fehlern führen.

Hinweis

BACPAC-Dateien eignen sich nicht für Backup- und Wiederherstellungsvorgänge. In Azure werden automatisch Sicherungen für jede Benutzerdatenbank erstellt. Ausführliche Informationen finden Sie unter Übersicht über die Geschäftskontinuität und Automatisierte Sicherungen in Azure SQL-Datenbank oder Automatisierte Sicherungen in Azure SQL Managed Instance.

Hinweis

Import und Export mit Private Link befindet sich in der Vorschau.

Das Azure-Portal

Das Exportieren einer BACPAC-Datei einer Datenbank aus Azure SQL Managed Instance mithilfe des Azure-Portals wird derzeit nicht unterstützt. Weitere Informationen finden Sie unter Überlegungen.

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. Der erforderliche Speicherplatz variiert bei Datenbanken mit derselben Größe enorm. Der erforderliche Speicherplatz kann bis zum Dreifachen der Größe der Datenbank betragen. Der lokale Speicherplatz von Computern, die die Import-/Exportanforderung ausführen, beträgt nur 450 GB. Daher kann bei einigen Anforderungen der Fehler There is not enough space on the disk auftreten. In diesem Fall besteht die Problemumgehung darin, „SqlPackage“ auf einem Computer mit ausreichend Speicherplatz auszuführen. Es wird empfohlen, SQLPackage zum Importieren oder Exportieren von Datenbanken zu verwenden, die größer als 150 GB sind, um dieses Problem zu vermeiden.

  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.

    Screenshot that highlights the Export button.

  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. Eine SQL Server-Administratoranmeldung ist hier auch dann erforderlich, wenn Sie der Azure-Administrator sind, weil ein Azure-Administrator keine Administratorberechtigungen in Azure SQL-Datenbank oder Azure SQL Managed Instance hat.

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

  3. Klickan Sie auf OK.

  4. Um den Status des Exportvorgangs zu überwachen, öffnen Sie die Seite für den Server mit der zu exportierenden Datenbank. Wählen Sie unter DatenverwaltungImport/Export-Verlauf aus.

SqlPackage-Hilfsprogramm

Die Verwendung des SQLPackage-Hilfsprogramms wird aus Gründen der Skalierbarkeit und Leistung für die meisten Produktionsumgebungen empfohlen. Sie können mehrere SqlPackage-Befehle parallel für Teilmengen von Tabellen ausführen, um Import-/Exportvorgänge zu beschleunigen.

Informationen zum Exportieren einer Datenbank in SQL-Datenbank mit dem Befehlszeilen-Hilfsprogramm SQLPackage finden Sie unter Exportparameter und -eigenschaften. Das Dienstprogramm SQLPackage ist für Windows, macOS und Linux verfügbar.

In diesem Beispiel wird gezeigt, wie eine Datenbank mithilfe von SqlPackage mit universeller Active Directory-Authentifizierung exportiert wird:

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 ist ein kostenloses Open-Source-Tool und für Windows, Mac und Linux verfügbar. Die Erweiterung „SQL Server dacpac“ bietet eine Assistentenschnittstelle für SqlPackage-Vorgänge, einschließlich Export und Import. Weitere Informationen zur Installation und Verwendung der Erweiterung finden Sie in der Dokumentation zur dacpac-Erweiterung von SQL Server.

SQL Server Management Studio (SSMS)

SQL Server Management Studio bietet einen Assistenten zum Exportieren einer Datenbank in Azure SQL-Datenbank oder SQL Managed Instance in eine BACPAC-Datei. Weitere Informationen finden Sie unter Exportieren einer Datenebenenanwendung.

PowerShell

Das Exportieren einer BACPAC-Datei einer Datenbank aus Azure SQL Managed Instance mithilfe von PowerShell wird derzeit nicht unterstützt. Weitere Informationen finden Sie unter Überlegungen.

Verwenden Sie das Cmdlet New-AzSqlDatabaseExport, um eine Anforderung für einen Datenbankexport beim Azure SQL-Datenbank-Dienst einzureichen. Je nach Größe Ihrer Datenbank kann es einige Zeit dauern, bis der Exportvorgang abgeschlossen ist.

$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. Wenn Sie dieses Cmdlet direkt nach der Anforderung ausführen, wird in der Regel Status: InProgress zurückgegeben. Wenn Status: Succeeded angezeigt wird, ist der Export abgeschlossen.

$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

Abbrechen der Exportanforderung

Verwenden Sie die API für Datenbankvorgänge – Abbrechen oder den PowerShell-Befehl Stop-AzSqlDatabaseActivity, um eine Exportanforderung abzubrechen. Dies ist ein PowerShell-Beispielbefehl:

Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId

Hinweis

Um einen Exportvorgang abzubrechen, müssen Sie über eine der folgenden Rollen verfügen:

Begrenzungen

  • Das Exportieren einer BACPAC-Datei in Azure Storage Premium mit den in diesem Artikel erläuterten Methoden wird nicht unterstützt.
  • Speicher hinter einer Firewall wird derzeit nicht unterstützt.
  • Unveränderlicher Speicher wird derzeit nicht unterstützt.
  • Für Azure SQL Managed Instance wird das Exportieren einer Datenbank in eine BACPAC-Datei mit dem Azure-Portal oder Azure PowerShell derzeit nicht unterstützt. Verwenden Sie zum Exportieren einer verwalteten Instanz in eine BACPAC-Datei SQL Server Management Studio (SSMS) oder SQLPackage.
  • Derzeit unterstützt der Import/Export-Dienst die Microsoft Entra ID-Authentifizierung nicht, wenn MFA erforderlich ist.
  • Import\Export-Dienste unterstützen nur die SQL-Authentifizierung und die Microsoft Entra ID. Import\Export ist nicht mit der Microsoft-Identity-Anwendungsregistrierung kompatibel.