Freigeben über


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

Gilt für:Azure SQL DatabaseAzure SQL Managed Instance

Sie können eine SQL Server Datenbank in Azure SQL Database oder SQL Managed Instance mithilfe einer datei .bacpac importieren. Sie können die Daten aus einer BACPAC-Datei importieren, die in Azure Blob Storage (nur Standardspeicher) oder aus dem lokalen Speicher an einem lokalen Speicherort gespeichert ist. 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 herunterskalieren.

Verwenden des Azure-Portals

Schauen Sie sich dieses Video an, um zu sehen, wie Sie aus einer BACPAC-Datei im Azure Portal importieren oder weiter lesen:

  • Das Azure-Portalonly unterstützt das Erstellen einer einzelnen Datenbank in Azure SQL Database und only aus einer BACPAC-Datei, die in Azure BLOB-Speicher gespeichert ist.
  • Um eine Datenbank in Azure SQL Managed Instance aus einer BACPAC-Datei zu migrieren, verwenden Sie SQL Server Management Studio oder das Befehlszeilenprogramm SqlPackage. Das Azure-Portal und Azure PowerShell werden derzeit nicht unterstützt.

Warnung

BACPAC-Dateien über 150 GB, die von SqlPackage generiert wurden, können möglicherweise nicht aus dem Azure-Portal oder über Azure PowerShell importiert werden und führen zu einer Fehlermeldung, die File contains corrupted data angibt. 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.

Hinweis

Computer, die Import-/Exportanforderungen verarbeiten, die über das Azure-Portal oder PowerShell übermittelt werden, müssen die BACPAC-Datei sowie 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, das Befehlszeilenprogramm SqlPackage auf einem Computer mit genügend lokalem Speicherplatz auszuführen. Wir empfehlen die Verwendung des Befehlszeilenprogramms SqlPackage zum Importieren/Exportieren von Datenbanken, die größer als 150 GB sind, um dieses Problem zu vermeiden.

  1. Zum Importieren aus einer BACPAC-Datei in eine neue einzelne Datenbank mithilfe des Azure Portals öffnen Sie die entsprechende Serverseite, und wählen Sie dann auf der Symbolleiste Import-Datenbank aus.

    Screenshot des Azure Portals, Übersichtsseite für logische Server mit ausgewählter Datenbankimport.

  2. Wählen Sie Sicherung auswählen aus. Wählen Sie das Speicherkonto aus, das Ihre Datenbank hosten soll, und wählen Sie dann die BACPAC-Datei aus, aus der importiert werden soll.

  3. Geben Sie die neue Datenbankgröße (in der Regel identisch mit dem Ursprung) an, und geben Sie das Ziel SQL Server Anmeldeinformationen an. Eine Liste der möglichen Werte für eine neue Datenbank in Azure SQL Database finden Sie unter Create Database.

    Screenshot des Azure Portals, Datenbankimportseite.

  4. Wählen Sie OK aus.

  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 des Azure Portals, Serverübersichtsseite 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.

Importieren mit verwalteter Identitätsauthentifizierung (Vorschau)

Azure SQL Database unterstützt das Importieren einer BACPAC-Datei mit managed Identity-Authentifizierung. Diese Option ermöglicht vollständig anmeldeinformationsfreie Importvorgänge und wird für Umgebungen empfohlen, die die SQL-Authentifizierung deaktivieren oder Microsoft Entra-only-Authentifizierung erzwingen.

Sie können eine Datenbank in eine neue Datenbank oder in eine vorhandene leere Datenbank importieren.

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 importieren, 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 Reader für das Quell-Azure Storage-Konto 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.

Die folgenden Szenarien werden nicht unterstützt:

  • Mandantenübergreifende Importvorgänge.
  • Verwaltete Identität wird nur auf Datenbankebene zugewiesen.

Hinweis

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

Verwenden von SqlPackage

Informationen zum Importieren einer SQL Server-Datenbank mithilfe des Befehlszeilenprogramms SqlPackage finden Sie unter Import von Parametern und Eigenschaften. Sie können die neuesten SqlPackage für Windows, macOS oder Linux herunterladen.

Für Skalierung und Leistung empfehlen wir die Verwendung von SqlPackage in den meisten Produktionsumgebungen, anstatt das Azure Portal zu verwenden. Einen SQL Server Kundenberatungsteamblog zum Migrieren mit BACPAC-Dateien finden Sie unter Migrating von SQL Server zu Azure SQL Database mithilfe von BACPAC Files.

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

Um eine Verbindung mit Azure SQL Database von hinter einer Unternehmensfirewall herzustellen, muss die Firewall port 1433 geöffnet sein. Um eine Verbindung mit SQL Managed Instance herzustellen, benötigen Sie eine point-zu-Site-Verbindung oder eine Expressroutenverbindung.

Alternativ zu Benutzername und Kennwort können Sie Microsoft Entra ID ( früher Azure Active Directory) verwenden. Derzeit unterstützt der Import/Export-Dienst keine Microsoft Entra ID Authentifizierung, 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 Sie eine Datenbank mithilfe von SqlPackage mit Microsoft Entra Authentifizierung importieren:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /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.

Verwenden von PowerShell

Hinweis

Azure SQL Managed Instance unterstützt derzeit keine Migration einer Datenbank in eine Instanzdatenbank aus einer BACPAC-Datei mithilfe von Azure PowerShell. Verwenden Sie zum Importieren in eine verwaltete SQL-Instanz SQL Server Management Studio oder SQLPackage.

Hinweis

Die Computer, die Import-/Exportanforderungen verarbeiten, die über das Portal oder PowerShell übermittelt werden, müssen die BACPAC-Datei sowie temporäre Dateien speichern, die von Data-Tier Application Framework (DacFX) generiert werden. 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 können einige Anforderungen mit dem Fehler fehlschlagen: There is not enough space on the disk. 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 PowerShell-Azure Resource Manager (AzureRM)-Modul wurde am 29. Februar 2024 nicht mehr unterstützt. Alle zukünftigen Entwicklungen sollten das Az.Sql-Modul verwenden. Benutzern wird empfohlen, von AzureRM zum Az PowerShell-Modul zu migrieren, um fortgesetzte Unterstützung und Updates sicherzustellen. Das AzureRM-Modul wird nicht mehr verwaltet oder unterstützt. Die Argumente für die Befehle im Az PowerShell-Modul und in den AzureRM-Modulen sind wesentlich identisch. Weitere Informationen zur Kompatibilität finden Sie unter Einführung in das neue Az PowerShell-Modul.

Verwenden Sie das Cmdlet New-AzSqlDatabaseImport, um eine Importdatenbankanforderung 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

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:

  • Die Rolle "SQL DB-Mitwirkender"
  • Eine benutzerdefinierte Azure-Rolle für rollenbasierte Zugriffssteuerung (RBAC) mit Microsoft.Sql/servers/databases/operations-Berechtigung

Kompatibilitätsgrad der neuen 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 auf einer bestimmten Kompatibilitätsebene finden Sie unter ALTER DATABASE Compatibility Level. Informationen zu anderen Einstellungen auf Datenbankebene im Zusammenhang mit Kompatibilitätsstufen finden Sie unter ALTER DATABASE SCOPED CONFIGURATION.

Begrenzungen

  • Das Importieren in eine Datenbank im elastischen Pool wird nicht über das Azure Portal, Azure PowerShell oder Azure CLI unterstützt. Erstellen Sie stattdessen eine Datenbank im elastischen Pool, und verwenden Sie dann SQLPackage Import, oder importieren Sie Daten mithilfe einer beliebigen Methode in eine einzelne Datenbank, und verschieben Sie die Datenbank dann in einen elastischen Pool.
  • Der Importexportdienst funktioniert nicht, wenn der Zugriff auf Azure Dienste auf OFF festgelegt ist. Sie können das Problem jedoch umgehen, indem Sie SqlPackage manuell von einer Azure VM ausführen oder den Export direkt in Ihrem Code mithilfe der DacFx-API ausführen.
  • Import unterstützt die Angabe einer Sicherungsspeicherredundanz beim Erstellen einer neuen Datenbank nicht und erstellt mit der standardmäßigen georedundanten Sicherungsspeicherredundanz. Erstellen Sie zunächst eine leere Datenbank mit der gewünschten Sicherungsspeicherredundanz mithilfe des Azure-Portals oder PowerShell, und importieren Sie dann die BACPAC 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 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.

Weitere Tools

Sie können auch diese Assistenten verwenden.