Eksportowanie do pliku BACPAC — usługi Azure SQL Database i Azure SQL Managed Instance
Dotyczy: Azure SQL Database Azure 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.
Aby wyeksportować bazę danych przy użyciu witryny Azure Portal, otwórz stronę bazy danych i wybierz pozycję Eksportuj na pasku narzędzi.
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.
Wybierz przycisk OK.
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.
Powiązana zawartość
- Aby dowiedzieć się więcej na temat długoterminowego przechowywania kopii zapasowych pojedynczej bazy danych i baz danych w puli jako alternatywy dla eksportowania bazy danych do celów archiwum, zobacz Długoterminowe przechowywanie kopii zapasowych. Za pomocą zadań agenta SQL można zaplanować kopie zapasowe bazy danych tylko do kopiowania jako alternatywę dla długoterminowego przechowywania kopii zapasowych.
- Aby dowiedzieć się więcej na temat importowania pliku BACPAC do bazy danych programu SQL Server, zobacz Importowanie pliku BACPAC do bazy danych programu SQL Server.
- Aby dowiedzieć się więcej o eksportowaniu pliku BACPAC z bazy danych programu SQL Server, zobacz Eksportowanie aplikacji warstwy danych
- Aby dowiedzieć się więcej na temat migrowania bazy danych przy użyciu usługi Data Migration Service, zobacz Migrowanie z programu SQL Server do usługi Azure SQL Database w trybie offline przy użyciu usługi DMS.
- Jeśli eksportujesz z programu SQL Server jako preludium do migracji do usługi Azure SQL Database, zobacz Migrowanie bazy danych programu SQL Server do usługi Azure SQL Database.
- Aby dowiedzieć się, jak bezpiecznie zarządzać kluczami magazynu i udostępniać je oraz sygnatury dostępu współdzielonego, zobacz Zalecenia dotyczące zabezpieczeń usługi Blob Storage.