Freigeben über


In eine BACPAC-Datei exportieren – Azure SQL Database und Azure SQL Managed Instance

Gilt für:Azure SQL DatabaseAzure 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-Speicher oder im lokalen Speicher an einem lokalen Speicherort gespeichert und später wieder in Azure SQL Database, Azure SQL Managed Instance oder 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.

Importieren oder Exportieren einer Azure SQL-Datenbank mithilfe einer privaten Verbindung befindet sich in der Vorschau.

Der Azure Storage Dateiname kann nicht mit . enden und darf keine Sonderzeichen wie ein Leerzeichen 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 Computing-Kapazität.

  • 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 festzustellen, ob Ihre Tabellen für den Export DBCC SHOW_STATISTICS optimiert sind, ist, DBCC SHOW_STATISTICS auszuführen und sicherzustellen, dass der -Wert nicht null ist und eine gute Verteilung aufweist. Ausführliche Informationen finden Sie unter DBCC-SHOW_STATISTICS (Transact-SQL).

  • Bei größeren Datenbanken kann der BACPAC-Export/-Import sehr lange dauern und aus verschiedenen Gründen zu Fehlern führen.

Hinweis

BACPACs sollen nicht für Sicherungs- und Wiederherstellungsvorgänge verwendet werden. Azure erstellt automatisch Sicherungen für jede Benutzerdatenbank. Ausführliche Informationen finden Sie unter business continuity overview and Automated backups in Azure SQL Database or Automated backups in Azure SQL Managed Instance.

Exportieren aus dem Azure-Portal

Hinweis

Computer, die Import-/Exportanforderungen verarbeiten, die über das Azure-Portal oder PowerShell übermittelt werden, müssen die BACPAC-Datei und temporäre Dateien speichern, die vom Data-Tier Application Framework (DacFX) generiert werden. 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 Anfragen 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. Verwenden Sie das SQLPackage-Hilfsprogramm , um Datenbanken zu importieren/zu exportieren, die größer als 150 GB sind, um dieses Problem zu vermeiden.

  1. Um eine Datenbank mithilfe des Azure Portals zu exportieren, öffnen Sie die Seite für Ihre Datenbank, und wählen Sie auf der Symbolleiste Export aus.

    Screenshot mit hervorgehobener Schaltfläche „Exportieren“

  2. Geben Sie den BACPAC-Dateinamen an, wählen Sie ein vorhandenes Azure Speicherkonto und einen Container für den Export aus, und geben Sie dann die entsprechenden Anmeldeinformationen für den Zugriff auf die Quelldatenbank an. Eine SQL-Server-Administratoranmeldung ist hier erforderlich, selbst wenn Sie der Azure-Administrator sind, da ein Azure-Administrator nicht automatisch über Administratorberechtigungen in Azure SQL Database oder Azure SQL Managed Instance verfügt.

    Screenshot der Seite „Datenbank exportieren“ mit angegebenem Benutzernamen und Kennwort.

  3. Wählen Sie OK aus.

  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.

Exportieren mit verwalteter Identitätsauthentifizierung (Vorschau)

Sie können eine Datenbank in Azure SQL Database mithilfe von managed IdentityAuthentifizierung in eine BACPAC-Datei exportieren, um die Notwendigkeit zu vermeiden, SQL-Administrator-Kennwörter oder Speicherzugriffsschlüssel bereitzustellen.

Ein ausführliches Lernprogramm finden Sie unter Verwenden der verwalteten Identität mit Import und Export (Vorschau).

Um eine BACPAC-Datei mit verwalteter Identitätsauthentifizierung zu exportieren, ist die folgende Konfiguration erforderlich:

  • Eine benutzer zugewiesene verwaltete Identität (UAMI) dem logischen Server für die Azure SQL-Datenbank zugewiesen.
  • Der Server verfügt über die verwaltete Identität, die als Microsoft Entra Administrator konfiguriert ist.
  • Eine verwaltete Identität wird der Rolle Storage Blob Data Contributor auf dem Ziel-Azure-Speicherkonto zugewiesen. Diese verwaltete Identität kann mit der dem Server zugewiesenen Identität oder einer anderen identität übereinstimmen.
  • Das logische Server-, verwaltete Identitäts- und Speicherkonto befinden sich im selben Microsoft Entra Mandanten.

Hinweis

Der Export mit verwalteter Identitätsauthentifizierung befindet sich derzeit in preview und ist nur für Azure SQL Database verfügbar.

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 Hilfsprogramm SQLPackage steht für Windows, macOS und Linux zur Verfügung.

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

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

Visual Studio Code

Die MSSQL-Erweiterung für Visual Studio Code ist eine kostenlose Open-Source-Erweiterung, die für Windows, macOS und Linux verfügbar ist. Die Erweiterung enthält die Datenebenenanwendung (Vorschau) für SqlPackage-Vorgänge , einschließlich Export und Import. Weitere Informationen zum Installieren und Verwenden der Erweiterung finden Sie in der MSSQL-Erweiterung für Visual Studio Code.

SQL Server Management Studio (SSMS)

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

PowerShell

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

Verwenden Sie das Cmdlet New-AzSqlDatabaseExport, um eine Exportdatenbankanforderung an den Azure SQL Database Dienst zu senden. 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

Zum Abbrechen des Exportvorgangs müssen Sie über eine der folgenden Rollen verfügen:

Begrenzungen

  • Das Exportieren einer BACPAC-Datei in Azure Premiumspeicher mithilfe der in diesem Artikel beschriebenen Methoden wird nicht unterstützt.
  • Speicher hinter einer Firewall wird derzeit nicht unterstützt.
  • Unveränderlicher Speicher wird derzeit nicht unterstützt.
  • Azure SQL Managed Instance unterstützt derzeit nicht das Exportieren einer Datenbank in eine BACPAC-Datei mithilfe des Azure Portals oder Azure PowerShell. Um eine verwaltete Instanz in eine BACPAC-Datei zu exportieren, verwenden Sie SQL Server Management Studio (SSMS) oder SQLPackage.
  • Derzeit unterstützt der Import/Export-Dienst keine Microsoft Entra ID Authentifizierung, wenn MFA erforderlich ist.
  • Import\Exportdienste unterstützen nur die SQL-Authentifizierung und Microsoft Entra ID. Import\Export ist nicht mit der Registrierung der Microsoft Identity-Anwendung kompatibel.