Eksportowanie do pliku BACPAC — usługi Azure SQL Database i Azure SQL Managed Instance

Dotyczy: Azure SQL DatabaseAzure SQL Managed Instance

Jeśli musisz wyeksportować bazę danych do archiwizacji lub przenieść na inną platformę, możesz wyeksportować schemat bazy danych i dane do pliku BACPAC . Plik BACPAC to plik ZIP z rozszerzeniem BACPAC zawierającym metadane i dane z bazy danych. Plik BACPAC może być przechowywany w usłudze Azure Blob Storage lub w magazynie lokalnym w lokalizacji lokalnej, a później zaimportowany z powrotem do usługi Azure SQL Database, usługi Azure SQL Managed Instance lub wystąpienia programu SQL Server.

Kwestie wymagające rozważenia

  • Aby eksport był spójny transakcyjnie, upewnij się, że żadne działanie zapisu nie występuje podczas eksportu lub że eksportujesz z transakcyjnie spójnej kopii bazy danych.

  • Jeśli eksportujesz do magazynu obiektów blob, maksymalny rozmiar pliku BACPAC wynosi 200 GB. Aby zarchiwizować większy plik BACPAC, wyeksportuj do magazynu lokalnego za pomocą pakietu SqlPackage.

  • Nazwa pliku usługi Azure Storage nie może kończyć się znakiem . specjalnym i nie może zawierać znaków specjalnych, takich jak znak spacji lub <, :%\*&>, . /? Nazwa pliku powinna być mniejsza niż 128 znaków.

  • Jeśli operacja eksportowania trwa ponad 20 godzin, może zostać anulowana. Aby zwiększyć wydajność podczas eksportowania, możesz wykonać następujące czynności:

    • Tymczasowo zwiększ rozmiar obliczeniowy.
    • Zatrzymaj wszystkie działania odczytu i zapisu podczas eksportu.
    • Użyj indeksu klastrowanego z wartościami innych niż null we wszystkich dużych tabelach. Bez indeksów klastrowanych eksport może zakończyć się niepowodzeniem, jeśli trwa dłużej niż 6–12 godzin. Jest to spowodowane tym, że usługa eksportu musi ukończyć skanowanie tabeli, aby spróbować wyeksportować całą tabelę. Dobrym sposobem określenia, czy tabele są zoptymalizowane pod kątem eksportu, jest uruchomienie DBCC SHOW_STATISTICS i upewnienie się, że RANGE_HI_KEY nie ma wartości null, a jej wartość ma dobrą dystrybucję. Aby uzyskać szczegółowe informacje, zobacz DBCC SHOW_STATISTICS.
  • W przypadku większych baz danych eksportowanie/importowanie pliku BACPAC może z różnych powodów zakończyć się niepowodzeniem.

Uwaga

Pliki BACPACs nie są przeznaczone do wykonywania operacji tworzenia kopii zapasowych i przywracania. Platforma Azure automatycznie tworzy kopie zapasowe dla każdej bazy danych użytkownika. Aby uzyskać szczegółowe informacje, zobacz Omówienie ciągłości działania i Automatyczne kopie zapasowe w usłudze Azure SQL Database lub Automatyczne kopie zapasowe w usłudze Azure SQL Managed Instance.

Uwaga

Importowanie i eksportowanie przy użyciu usługi Private Link jest dostępne w wersji zapoznawczej.

Azure Portal

Eksportowanie pliku BACPAC bazy danych z usługi Azure SQL Managed Instance przy użyciu witryny Azure Portal nie jest obecnie obsługiwane. Zobacz Zagadnienia.

Uwaga

Maszyny przetwarzają żądania importu/eksportu przesłane za pośrednictwem witryny Azure Portal lub programu PowerShell muszą przechowywać plik BACPAC, a także pliki tymczasowe generowane przez strukturę aplikacji warstwy danych (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 pakietu SqlPackage na maszynie z wystarczającą ilością miejsca na dysku lokalnym. Zalecamy użycie pakietu SQLPackage do importowania/eksportowania baz danych większych niż 150 GB, aby uniknąć tego problemu.

  1. Aby wyeksportować bazę danych przy użyciu witryny Azure Portal, otwórz stronę bazy danych i wybierz pozycję Eksportuj na pasku narzędzi.

    Screenshot that highlights the Export button.

  2. Określ nazwę pliku BACPAC, wybierz istniejące konto usługi Azure Storage i kontener dla eksportu, a następnie podaj odpowiednie poświadczenia dostępu do źródłowej bazy danych. W tym miejscu potrzebny jest identyfikator logowania administratora programu SQL Server, nawet jeśli jesteś administratorem platformy Azure, ponieważ jako administrator platformy Azure nie ma uprawnień administratora w usłudze Azure SQL Database lub usłudze Azure SQL Managed Instance.

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

  3. Wybierz przycisk OK.

  4. Aby monitorować postęp operacji eksportowania, otwórz stronę serwera zawierającego eksportowaną bazę danych. W obszarze Zarządzanie danymi wybierz pozycję Importuj/Eksportuj historię.

Narzędzie SQLPackage

Zalecamy użycie narzędzia SQLPackage do skalowania i wydajności w większości środowisk produkcyjnych. Można uruchomić wiele poleceń SqlPackage równolegle dla podzestawów tabel, aby przyspieszyć operacje importowania/eksportowania.

Aby wyeksportować bazę danych w usłudze SQL Database przy użyciu narzędzia wiersza polecenia SQLPackage , zobacz Eksportowanie parametrów i właściwości. Narzędzie SQLPackage jest dostępne dla systemów Windows, macOS i Linux.

W tym przykładzie pokazano, jak wyeksportować bazę danych przy użyciu pakietu SqlPackage z uwierzytelnianiem uniwersalnym usługi Active Directory:

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 to bezpłatne narzędzie typu open source i jest dostępne dla systemów Windows, Mac i Linux. Rozszerzenie "SQL Server dacpac" udostępnia interfejs kreatora dla operacji SqlPackage, w tym eksportowanie i importowanie. Aby uzyskać więcej informacji na temat instalowania i używania rozszerzenia, zobacz rozszerzenie dacpac programu SQL Server.

SQL Server Management Studio (SSMS)

Program SQL Server Management Studio udostępnia kreatora eksportowania bazy danych w usłudze Azure SQL Database lub bazy danych wystąpienia zarządzanego SQL do pliku BACPAC. Zobacz Eksportowanie aplikacji warstwy danych.

PowerShell

Eksportowanie pliku BACPAC bazy danych z usługi Azure SQL Managed Instance przy użyciu programu PowerShell nie jest obsługiwane. Zobacz Zagadnienia.

Użyj polecenia cmdlet New-AzSqlDatabaseExport, aby przesłać żądanie eksportu bazy danych do usługi Azure SQL Database. W zależności od rozmiaru bazy danych operacja eksportowania może zająć trochę czasu.

$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
  -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
  -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password

Aby sprawdzić stan żądania eksportu, użyj polecenia cmdlet Get-AzSqlDatabaseImportExportStatus . Uruchomienie tego polecenia cmdlet natychmiast po żądaniu zwykle zwraca stan: InProgress. Po wyświetleniu komunikatu Stan: Zakończono eksportowanie powiodło się .

$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

Anulowanie żądania eksportu

Użyj polecenia Operacje bazy danych — anuluj interfejs API lub polecenie Stop-AzSqlDatabaseActivity programu PowerShell, aby anulować żądanie eksportu. Oto przykładowe polecenie programu PowerShell:

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

Uwaga

Aby anulować operację eksportowania, musisz mieć jedną z następujących ról:

  • Rola Współautor bazy danych SQL LUB
  • Niestandardowa rola RBAC platformy Azure z uprawnieniami Microsoft.Sql/servers/databases/operations

Ograniczenia

  • Eksportowanie pliku BACPAC do usługi Azure Premium Storage przy użyciu metod omówionych w tym artykule nie jest obsługiwane.
  • Usługa Storage za zaporą nie jest obecnie obsługiwana.
  • Magazyn niezmienny nie jest obecnie obsługiwany.
  • Usługa Azure SQL Managed Instance nie obsługuje obecnie eksportowania bazy danych do pliku BACPAC przy użyciu witryny Azure Portal ani programu Azure PowerShell. Aby wyeksportować wystąpienie zarządzane do pliku BACPAC, użyj programu SQL Server Management Studio (SSMS) lub sqlPackage.
  • Obecnie usługa Import/Export nie obsługuje uwierzytelniania identyfikatora Entra firmy Microsoft, gdy jest wymagana uwierzytelnianie wieloskładnikowe.
  • Usługi Import\Export obsługują tylko uwierzytelnianie SQL i identyfikator Entra firmy Microsoft. Import\Export nie jest zgodny z rejestracją aplikacji tożsamości firmy Microsoft.