Udostępnij za pośrednictwem


Szybki start: importowanie pliku BACPAC do bazy danych w Azure SQL Database lub Azure SQL Managed Instance

Applies to:Azure SQL DatabaseAzure SQL Managed Instance

Bazę danych SQL Server można zaimportować do Azure SQL Database lub SQL Managed Instance przy użyciu pliku .bacpac. Dane można zaimportować z pliku BACPAC przechowywanego w usłudze Azure Blob Storage (tylko magazyn standardowy) lub z magazynu lokalnego w lokalizacji lokalnej. Aby maksymalnie zwiększyć szybkość importowania przez zapewnienie większej ilości szybszych zasobów, przeprowadź skalowanie bazy danych do wyższej warstwy usługi i rozmiaru obliczeniowego na czas trwania procesu importowania. Po pomyślnym zakończeniu importowania możesz przeprowadzić skalowanie w dół.

Korzystanie z portalu Azure

Obejrzyj to wideo, aby zobaczyć, jak zaimportować plik BACPAC za pomocą portalu Azure lub kontynuować czytanie:

  • Portal Azureonly obsługuje tworzenie pojedynczej bazy danych w Azure SQL Database i only z pliku BACPAC przechowywanego w usłudze Azure Blob Storage.
  • Aby przeprowadzić migrację bazy danych do Azure SQL Managed Instance z pliku BACPAC, użyj SQL Server Management Studio lub narzędzia wiersza polecenia SqlPackage. Portal Azure i Azure PowerShell nie są obecnie obsługiwane.

Ostrzeżenie

Importowanie plików BACPAC z poziomu pakietu SqlPackage o rozmiarze przekraczającym 150 GB może zakończyć się niepowodzeniem z poziomu portalu Azure lub Azure PowerShell z komunikatem o błędzie informującym File contains corrupted data. Jest to wynik znanego problemu, a obejście polega na użyciu SqlPackage narzędzia wiersza polecenia do zaimportowania pliku BACPAC. Aby uzyskać więcej informacji, zobacz SqlPackage i dziennik problemów.

Uwaga

Maszyny przetwarzają żądania importu/eksportu przesłane za pośrednictwem portalu Azure lub programu PowerShell muszą przechowywać plik BACPAC, a także pliki tymczasowe generowane przez Data-Tier Application Framework (DacFX). Wymagane miejsce na dysku różni się znacznie między bazami danych o tym samym rozmiarze i może wymagać miejsca na dysku do trzech razy więcej niż rozmiar bazy danych. Maszyny z uruchomionym żądaniem importu/eksportu mają tylko 450 GB miejsca na dysku lokalnym. W związku z tym niektóre żądania mogą zakończyć się niepowodzeniem z powodu błędu There is not enough space on the disk. W takim przypadku obejściem jest uruchomienie narzędzia wiersza polecenia SqlPackage na maszynie z wystarczającą ilością miejsca na dysku lokalnym. Zalecamy użycie narzędzia wiersza polecenia SqlPackage do importowania/eksportowania baz danych większych niż 150 GB, aby uniknąć tego problemu.

  1. Aby zaimportować plik BACPAC do nowej pojedynczej bazy danych przy użyciu portalu Azure, otwórz odpowiednią stronę serwera, a następnie na pasku narzędzi wybierz pozycję Importuj bazę danych.

    Zrzut ekranu przedstawiający portal Azure, stronę przeglądu serwera logicznego z wybranym importem bazy danych.

  2. Wybierz pozycję Wybierz kopię zapasową. Wybierz konto magazynu hostujące bazę danych, a następnie wybierz plik BACPAC, z którego chcesz zaimportować.

  3. Określ nowy rozmiar bazy danych (zazwyczaj taki sam jak źródło) i podaj poświadczenia SQL Server docelowej. Aby uzyskać listę możliwych wartości dla nowej bazy danych w Azure SQL Database, zobacz Tworzenie bazy danych.

     Zrzut ekranu przedstawiający portal Azure, stronę importowania bazy danych.

  4. Kliknij przycisk OK.

  5. Aby monitorować postęp importowania, otwórz stronę serwera bazy danych, a następnie w obszarze Ustawienia wybierz pozycję Importuj/Eksportuj historię. Po pomyślnym zakończeniu importowanie ma stan Ukończono .

    Zrzut ekranu przedstawiający portal Azure, stronę przeglądu serwera z wyświetlonym statusem importu bazy danych.

  6. Aby sprawdzić, czy baza danych jest aktywna na serwerze, wybierz pozycję Bazy danych SQL i sprawdź, czy nowa baza danych jest w trybie online.

Importowanie przy użyciu uwierzytelniania tożsamości zarządzanej (wersja zapoznawcza)

Azure SQL Database obsługuje importowanie pliku BACPAC przy użyciu managed identity uwierzytelniania. Ta opcja umożliwia pełne operacje importowania bez poświadczeń i jest zalecana w środowiskach, które wyłączają uwierzytelnianie SQL lub wymuszają uwierzytelnianie tylko Microsoft Entra.

Bazę danych można zaimportować do nowej bazy danych lub do istniejącej pustej bazy danych.

Aby uzyskać szczegółowy samouczek, zobacz Używanie tożsamości zarządzanej z importowaniem i eksportowaniem (wersja zapoznawcza).

Aby zaimportować plik BACPAC przy użyciu uwierzytelniania tożsamości zarządzanej, wymagana jest następująca konfiguracja:

  • Tożsamość zarządzana przypisana przez użytkownika (UAMI) przypisana do logicznego serwera Azure SQL Database.
  • Serwer ma tożsamość zarządzaną skonfigurowaną jako Microsoft Entra administrator.
  • Do roli Storage Blob Data Reader na koncie źródłowym Azure Storage przypisana jest tożsamość zarządzana. Ta tożsamość zarządzana może być taka sama jak tożsamość przypisana do serwera lub może być inna.
  • Serwer logiczny, tożsamość zarządzana i konto magazynu znajdują się w tej samej dzierżawie Microsoft Entra.

Następujące scenariusze nie są obsługiwane:

  • Operacje importowania między dzierżawami.
  • Zarządzana tożsamość przypisana jest wyłącznie na poziomie bazy danych.

Uwaga

Importowanie przy użyciu uwierzytelniania za pomocą tożsamości zarządzanej jest obecnie w wersji zapoznawczej i dostępne wyłącznie dla Azure SQL Database.

Korzystanie z pakietu SqlPackage

Aby zaimportować bazę danych SQL Server przy użyciu SqlPackage narzędzia wiersza polecenia, zobacz importowanie parametrów i właściwości. Możesz pobrać najnowszą SqlPackage dla Windows, macOS lub Linux.

W przypadku skalowania i wydajności zalecamy używanie pakietu SqlPackage w większości środowisk produkcyjnych, a nie korzystania z portalu Azure. Aby uzyskać dostęp do bloga zespołu doradczego klienta SQL Server na temat migracji przy użyciu plików BACPAC, zobacz artykuł migracja z SQL Server do Azure SQL Database przy użyciu plików BACPAC.

Model aprowizacji oparty na jednostkach DTU obsługuje wybieranie maksymalnych wartości rozmiaru bazy danych dla każdej warstwy. Podczas importowania bazy danych użyj jednej z tych obsługiwanych wartości.

Następujące polecenie SqlPackage importuje AdventureWorks2008R2 bazę danych z magazynu lokalnego do logicznego serwera SQL o nazwie mynewserver20170403. Tworzy nową bazę danych o nazwie myMigratedDatabase z warstwą usługi Premium i celem usługi P6 . Zmień te wartości zgodnie z potrzebami środowiska.

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

Ważne

Aby nawiązać połączenie z Azure SQL Database zza zapory firmowej, zapora musi mieć otwarty port 1433. Aby nawiązać połączenie z SQL Managed Instance, musisz mieć połączenie punkt-lokalizacja lub połączenie ExpressRoute.

Alternatywą dla nazwy użytkownika i hasła jest użycie Microsoft Entra ID (formerly Azure Active Directory). Obecnie usługa Import/Export nie obsługuje Microsoft Entra ID, gdy jest wymagane uwierzytelnienie wieloskładnikowe. Zastąp parametry nazwy użytkownika i hasła dla /ua:true i /tid:"yourdomain.onmicrosoft.com". W tym przykładzie pokazano, jak zaimportować bazę danych przy użyciu pakietu SqlPackage z uwierzytelnianiem Microsoft Entra:

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

Visual Studio Code

Rozszerzenie MSSQL dla Visual Studio Code to bezpłatne rozszerzenie typu open source dostępne dla Windows, macOS i Linux. Rozszerzenie obejmuje środowisko Data-tier Application (Preview) dla operacji SqlPackage, w tym eksport i import. Aby uzyskać więcej informacji na temat instalowania i używania rozszerzenia, zobacz rozszerzenie MSSQL dla Visual Studio Code.

Użyj PowerShell

Uwaga

Azure SQL Managed Instance obecnie nie wspiera migracji bazy danych do bazy danych instancji z pliku BACPAC przy użyciu Azure PowerShell. Aby zaimportować je do wystąpienia zarządzanego SQL, użyj SQL Server Management Studio lub SQLPackage.

Uwaga

Maszyny przetwarzają żądania importu/eksportu przesłane za pośrednictwem portalu lub programu PowerShell muszą przechowywać plik BACPAC, a także pliki tymczasowe generowane przez program Data-Tier Application Framework (DacFX). Wymagane miejsce na dysku różni się znacznie w przypadku baz danych o tym samym rozmiarze i może osiągnąć nawet trzykrotność rozmiaru bazy danych. Maszyny z uruchomionym żądaniem importu/eksportu mają tylko 450 GB miejsca na dysku lokalnym. W związku z tym niektóre żądania mogą zakończyć się niepowodzeniem z powodu błędu: There is not enough space on the disk. W takim przypadku obejściem jest uruchomienie pakietu SqlPackage na maszynie z wystarczającą ilością miejsca na dysku lokalnym. Podczas importowania/eksportowania baz danych większych niż 150 GB użyj pakietu SqlPackage, aby uniknąć tego problemu.

Ważne

Moduł PowerShell Azure Resource Manager (AzureRM) został wycofany 29 lutego 2024 r. Wszystkie przyszłe programowanie powinno używać modułu Az.Sql. Zaleca się migrowanie użytkowników z modułu AzureRM do modułu Az programu PowerShell w celu zapewnienia ciągłej obsługi i aktualizacji. Moduł AzureRM nie jest już utrzymywany ani obsługiwany. Argumenty poleceń w module Az programu PowerShell i modułach AzureRM są zasadniczo identyczne. Aby uzyskać więcej informacji na temat ich zgodności, zobacz Wprowadzenie nowego modułu Az PowerShell.

Użyj polecenia cmdlet New-AzSqlDatabaseImport aby przesłać żądanie importowania bazy danych do Azure. W zależności od rozmiaru bazy danych importowanie może zająć trochę czasu. Model aprowizacji oparty na jednostkach DTU obsługuje wybieranie maksymalnych wartości rozmiaru bazy danych dla każdej warstwy. Podczas importowania bazy danych użyj jednej z tych obsługiwanych wartości.

$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)

Aby sprawdzić postęp importowania, możesz użyć polecenia cmdlet Get-AzSqlDatabaseImportExportStatus . Uruchomienie polecenia cmdlet natychmiast po żądaniu zwykle zwraca wartość Status: InProgress. Importowanie zostanie ukończone po wyświetleniu komunikatu Status: Succeeded.

$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

Napiwek

Aby zapoznać się z innym przykładem skryptu, zobacz Importowanie pliku BACPAC do bazy danych w usłudze SQL Database przy użyciu programu PowerShell.

Anulowanie żądania importu

Użyj Database Operations - Cancel API lub polecenia Stop-AzSqlDatabaseActivity programu PowerShell, jak pokazano w poniższym przykładzie:

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

Uprawnienia wymagane do anulowania importu

Aby anulować operację importowania, musisz być członkiem jednej z następujących ról:

  • Rola Współautor bazy danych SQL
  • Rola dostępu oparta na rolach (RBAC) niestandardowa dla Azure z uprawnieniem Microsoft.Sql/servers/databases/operations.

Poziom zgodności nowej bazy danych

  • Poziom zgodności zaimportowanych baz danych jest oparty na poziomie zgodności źródłowej bazy danych.

  • Po zaimportowaniu bazy danych można wybrać obsługę bazy danych na bieżącym poziomie zgodności lub na wyższym poziomie. Aby uzyskać więcej informacji na temat implikacji i opcji obsługi bazy danych na określonym poziomie zgodności, zobacz ALTER DATABASE compatibility level (Poziom zgodności ALTER DATABASE). Aby uzyskać informacje o innych ustawieniach na poziomie bazy danych związanych z poziomami zgodności, zobacz ALTER DATABASE SCOPED CONFIGURATION.

Ograniczenia

  • Importowanie do bazy danych w elastycznej puli nie jest obsługiwane za pośrednictwem portalu Azure, Azure PowerShell ani Azure CLI. Zamiast tego utwórz bazę danych w elastycznej puli, a następnie użyj SQLPackage Importlub zaimportuj dane przy użyciu dowolnej metody do pojedynczej bazy danych, a następnie przenieś bazę danych do elastycznej puli.
  • Usługa importu eksportu nie działa, gdy ustawienie Zezwalaj na dostęp do usług Azure jest wyłączone. Można jednak obejść ten problem, ręcznie uruchamiając pakiet SqlPackage z maszyny wirtualnej Azure lub wykonując eksport bezpośrednio w kodzie przy użyciu interfejsu API DacFx.
  • Importowanie nie obsługuje określania nadmiarowości magazynu kopii zapasowych podczas tworzenia nowej bazy danych i tworzy ją z domyślną geograficzną nadmiarowością magazynu kopii zapasowych. Aby obejść ten proces, najpierw utwórz pustą bazę danych z wymaganą nadmiarowością magazynu kopii zapasowych przy użyciu portalu Azure lub programu PowerShell, a następnie zaimportuj plik BACPAC do tej pustej bazy danych.
  • Przechowywanie za zaporą nie jest obecnie obsługiwane.
  • Podczas procesu importowania nie twórz bazy danych o tej samej nazwie. Proces importowania tworzy nową bazę danych o określonej nazwie.
  • Obecnie usługa Import/Export nie obsługuje Microsoft Entra ID, gdy jest wymagane uwierzytelnienie wieloskładnikowe.
  • Usługi Import\Export obsługują tylko uwierzytelnianie SQL i Microsoft Entra ID. Import\Eksport nie jest zgodny z rejestracją aplikacji Microsoft Identity.

Dodatkowe narzędzia

Możesz również użyć tych kreatorów.