Schnellstart: Importieren einer bacpac-Datei in eine Datenbank in Azure SQL-Datenbank oder Azure SQL Managed Instance

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

Sie können eine SQL Server-Datenbank mithilfe einer BACPAC-Datei in eine Datenbank in Azure SQL-Datenbank oder SQL Managed Instance importieren. Sie können die Daten aus einer im Azure Blob Storage gespeicherten bacpac-Datei (nur Storage Standard) oder aus dem lokalen Speicher an einem lokalen Speicherort importieren. Um die Importgeschwindigkeit durch die Bereitstellung von mehr und schnelleren Ressourcen zu maximieren, skalieren Sie Ihre Datenbank während des Importvorgangs auf eine höhere Dienstebene und Computegröße. Sie können dann nach erfolgreichem Import zentral herunterskalieren.

Hinweis

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

Verwenden des Azure-Portals

Sehen Sie sich dieses Video an, um zu erfahren, wie Sie aus einer bacpac-Datei im Azure-Portal importieren können, oder lesen Sie weiter:

Das Azure-Portal unterstützt nur das Erstellen einer Einzeldatenbank in Azure SQL-Datenbank und nur aus einer in Azure Blob-Speicher gespeicherten BACPAC-Datei.

Warnung

Bacpac-Dateien über 4 GB, die von SqlPackage generiert werden, können nicht aus dem Azure-Portal oder Azure PowerShell mit einer Fehlermeldung importiert werden, und es wird die Fehlermeldung File contains corrupted data. angezeigt. Dies ist ein bekanntes Problem, und die Problemumgehung besteht darin, das SqlPackage-Befehlszeilenprogramm zum Importieren der Bacpac-Datei zu verwenden. Weitere Informationen finden Sie unter SqlPackage und im Problemprotokoll.

Um eine Datenbank aus einer bacpac-Datei in Azure SQL Managed Instance zu importieren, verwenden Sie SQL Server Management Studio oder SQLPackage. Die Verwendung von Azure-Portal oder Azure PowerShell wird aktuell nicht unterstützt.

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 bacpac-Datei über das Azure-Portal in eine neue Einzeldatenbank zu importieren, öffnen Sie die entsprechende Serverseite, und wählen Sie auf der Symbolleiste Datenbank importieren aus.

    Screenshot der Übersichtsseite für den logischen Server im Azure-Portal mit ausgewählter Option „Datenbankimport“

  2. Wählen Sie Sicherung auswählen aus. Wählen Sie das Speicherkonto aus, in dem Ihre Datenbank gehostet wird, und wählen Sie dann die bacpac-Datei für den Import aus.

  3. Geben Sie die Größe der neuen Datenbank (in der Regel identisch mit dem Ursprung) und die SQL Server-Anmeldeinformationen für das Ziel an. Eine Liste der möglichen Werte für eine neue Datenbank in Azure SQL-Datenbank finden Sie unter Erstellen einer Datenbank.

    Screenshot der Seite „Datenbankimport“ im Azure-Portal

  4. Klicken Sie auf OK.

  5. Um den Fortschritt eines Importvorgangs zu überwachen, öffnen Sie die Seite für den Server der Datenbank, und wählen Sie unter Einstellungen die Option Import-/Exportverlauf aus. Bei erfolgreicher Ausführung weist der Import den Status Abgeschlossen auf.

    Screenshot der Übersichtsseite des Servers im Azure-Portal mit dem Datenbankimportstatus

  6. Zum Überprüfen, ob die Datenbank auf dem Server aktiv ist, wählen Sie SQL-Datenbanken aus, und prüfen Sie, ob der Status der neuen Datenbank Online ist.

Verwenden von SqlPackage

Informationen zum Importieren einer SQL Server-Datenbank mit dem Befehlszeilenprogramm SqlPackage finden Sie unter Importparameter und -eigenschaften. Sie können das neueste SqlPackage für Windows, macOS oder Linux herunterladen.

Aus Gründen der Skalierbarkeit und Leistung wird die Verwendung von SqlPackage (statt des Azure-Portals) für die meisten Produktionsumgebungen empfohlen. 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).

Das DTU-basierte Bereitstellungsmodell unterstützt ausgewählte Werte für die maximale Datenbankgröße für jede Ebene. Verwenden Sie beim Importieren einer Datenbank einen dieser unterstützten Werte.

Mit dem folgenden SqlPackage-Befehl wird die Datenbank AdventureWorks2008R2 aus dem lokalen Speicher in eine logische SQL Server-Instanz mit dem Namen mynewserver20170403 importiert. Er erstellt eine neue Datenbank namens myMigratedDatabase mit der Premium-Dienstebene und dem Serviceobjekt P6. Ändern Sie diese Werte entsprechend Ihrer Umgebung.

SqlPackage /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=<migratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2008R2.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6

Wichtig

Wenn Sie sich hinter einer Unternehmensfirewall befinden und eine Verbindung mit Azure SQL-Datenbank herstellen möchten, muss Port 1433 der Firewall geöffnet sein. Um eine Verbindung mit SQL Managed Instance herzustellen, benötigen Sie eine Point-to-Site-Verbindung oder eine ExpressRoute-Verbindung.

Als Alternative zu Benutzername und Kennwort können Sie Microsoft Entra ID (früher Azure Active Directory) verwenden. Derzeit unterstützt der Import/Export-Dienst die Microsoft Entra ID-Authentifizierung nicht, wenn MFA erforderlich ist. Ersetzen Sie /ua:true und /tid:"yourdomain.onmicrosoft.com" durch die Parameter „username“ (Benutzername) und „password“ (Kennwort). In diesem Beispiel wird gezeigt, wie eine Datenbank unter Verwendung von SqlPackage mit der Authentifizierung in Microsoft Entra importiert wird:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

Azure Data Studio

Azure Data Studio ist ein kostenloses Open-Source-Tool und für Windows, macOS 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.

Verwenden von PowerShell

Hinweis

Bei Azure SQL Managed Instance ist es derzeit nicht möglich, eine Datenbank aus einer bacpac-Datei über Azure PowerShell in eine Instanzdatenbank zu migrieren. Verwenden Sie zum Import in eine verwaltete SQL-Instanz entweder SQL Server Management Studio oder SQLPackage.

Hinweis

Die Computer, die über das Portal oder PowerShell übermittelte Import-/Exportanforderungen verarbeiten, müssen die BACPAC-Datei sowie die von DacFX (Data-Tier Application Framework) generierten temporären Dateien speichern. Der erforderliche Speicherplatz schwankt bei Datenbanken mit derselben Größe enorm, und es kann bis zu drei Mal so viel Speicherplatz benötigt werden wie die Größe der Datenbank selbst. 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“ (Auf dem Datenträger ist nicht genügend Speicherplatz verfügbar.) auftreten. In diesem Fall besteht die Problemumgehung darin, „SqlPackage“ auf einem Computer mit ausreichend Speicherplatz auszuführen. Verwenden Sie zum Importieren/Exportieren von Datenbanken mit mehr als 150 GB „SqlPackage“, um dieses Problem zu vermeiden.

Wichtig

Das Azure Resource Manager-Modul (RM) von PowerShell wird weiterhin unterstützt, aber alle zukünftigen Entwicklungen erfolgen für das Az.Sql-Modul. Das AzureRM-Modul erhält mindestens bis Dezember 2020 weiterhin Fehlerbehebungen. Die Argumente für die Befehle im Az-Modul und den AzureRm-Modulen sind im Wesentlichen identisch. Weitere Informationen zur Kompatibilität finden Sie in der Einführung in das neue Azure PowerShell Az-Modul.

Verwenden Sie das Cmdlet New-AzSqlDatabaseImport, um eine Anforderung für einen Datenbankimport an Azure zu übermitteln. Je nach Größe der Datenbank kann der Importvorgang einige Zeit in Anspruch nehmen. Das DTU-basierte Bereitstellungsmodell unterstützt ausgewählte Werte für die maximale Datenbankgröße für jede Ebene. Verwenden Sie beim Importieren einer Datenbank einen dieser unterstützten Werte.

$importRequest = New-AzSqlDatabaseImport -ResourceGroupName "<resourceGroupName>" `
    -ServerName "<serverName>" -DatabaseName "<databaseName>" `
    -DatabaseMaxSizeBytes "<databaseSizeInBytes>" -StorageKeyType "StorageAccessKey" `
    -StorageKey $(Get-AzStorageAccountKey `
        -ResourceGroupName "<resourceGroupName>" -StorageAccountName "<storageAccountName>").Value[0] `
        -StorageUri "https://myStorageAccount.blob.core.windows.net/importsample/sample.bacpac" `
        -Edition "Premium" -ServiceObjectiveName "P6" `
        -AdministratorLogin "<userId>" `
        -AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)

Mit dem Cmdlet Get-AzSqlDatabaseImportExportStatus können Sie den Status des Importvorgangs überprüfen. Wenn Sie das Cmdlet direkt nach der Anforderung ausführen, wird in der Regel Status: InProgress zurückgegeben. Der Import ist abgeschlossen, wenn Status: Succeeded angezeigt wird.

$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink

[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress") {
    $importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
    [Console]::Write(".")
    Start-Sleep -s 10
}

[Console]::WriteLine("")
$importStatus

Tipp

Ein weiteres Skriptbeispiel finden Sie unter Importieren einer Datenbank aus einer BACPAC-Datei.

Abbrechen der Importanforderung

Verwenden Sie wie im folgenden Beispiel die API zum Abbrechen von Datenbankvorgängen oder den PowerShell-Befehl Stop-AzSqlDatabaseActivity:

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

Zum Abbrechen des Importvorgangs erforderliche Berechtigungen

Um einen Importvorgang abzubrechen, müssen Sie Mitglied einer der folgenden Rollen sein:

Kompatibilitätsgrad der Datenbank

  • Der Kompatibilitätsgrad der importierten Datenbank beruht auf dem Kompatibilitätsgrad der Quelldatenbank.
  • Nachdem Sie die Datenbank importiert haben, können Sie wählen, ob die Datenbank mit dem aktuellen Kompatibilitätsgrad oder mit einem höheren Grad ausgeführt werden soll. Weitere Informationen zu den Auswirkungen und Optionen für das Ausführen einer Datenbank mit einem bestimmten Kompatibilitätsgrad finden Sie unter ALTER DATABASE Compatibility Level. Lesen Sie auch ALTER DATABASE SCOPED CONFIGURATION. Dort finden Sie Informationen zu anderen Einstellungen auf Datenbankebene, die sich auf Kompatibilitätsgrade beziehen.

Begrenzungen

  • Das Importieren in eine Datenbank in einen Pool für elastische Datenbanken wird nicht unterstützt. Sie können jedoch Daten in eine Einzeldatenbank importieren und die Datenbank anschließend in einen Pool für elastische Datenbanken verschieben.
  • Der Import/Export-Dienst funktioniert nicht, wenn „Azure-Diensten Zugriff auf den Server erlauben“ mit „AUS“ deaktiviert ist. Sie können dieses Problem jedoch umgehen, indem Sie „SqlPackage“ manuell auf einer Azure-VM ausführen oder den Export mithilfe der DacFx-API direkt in Ihrem Code durchführen.
  • Für Importieren wird beim Erstellen einer neuen Datenbank die Angabe einer Sicherungsspeicherredundanz nicht unterstützt, sondern Redundanz wird mit dem standardmäßigen georedundanten Sicherungsspeicher erstellt. Um dieses Problem zu umgehen, erstellen Sie zunächst eine leere Datenbank mit gewünschter Sicherungsspeicherredundanz über das Azure-Portal oder PowerShell, und importieren Sie dann die bacpac-Datei in diese leere Datenbank.
  • Speicher hinter einer Firewall wird derzeit nicht unterstützt.
  • Erstellen Sie während des Importvorgangs keine Datenbank mit demselben Namen. Der Importvorgang erstellt eine neue Datenbank mit dem angegebenen Namen.
  • 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.

Weitere Tools

Sie können auch die folgenden Assistenten verwenden: