Exportera till en BACPAC-fil – Azure SQL Database och Azure SQL Managed Instance

Gäller för:Azure SQL DatabaseAzure SQL Managed Instance

När du behöver exportera en databas för arkivering eller för att flytta till en annan plattform kan du exportera databasschemat och data till en BACPAC-fil . En BACPAC-fil är en ZIP-fil med ett tillägg av BACPAC som innehåller metadata och data från databasen. En BACPAC-fil kan lagras i Azure Blob Storage eller i lokal lagring på en lokal plats och importeras senare tillbaka till Azure SQL Database, Azure SQL Managed Instance eller en SQL Server-instans.

Att tänka på

  • För att en export ska vara transaktionsmässigt konsekvent måste du antingen se till att ingen skrivaktivitet inträffar under exporten eller att du exporterar från en transaktionsmässigt konsekvent kopia av databasen.

  • Om du exporterar till bloblagring är den maximala storleken på en BACPAC-fil 200 GB. Om du vill arkivera en större BACPAC-fil exporterar du till lokal lagring med SqlPackage.

  • Azure Storage-filnamnet kan inte sluta med . och får inte innehålla specialtecken som ett blankstegstecken eller <, >, *%, &, , :, \, , /, . ? Filnamnet ska vara färre än 128 tecken långt.

  • Om exportåtgärden överskrider 20 timmar kan den komma att avbrytas. Om du vill öka prestandan under exporten kan du:

    • Öka beräkningsstorleken tillfälligt.
    • Avbryt all läs- och skrivaktivitet under exporten.
    • Använd ett grupperat index med värden som inte är null i alla stora tabeller. Utan grupperade index kan en export misslyckas om det tar längre tid än 6–12 timmar. Det beror på att exporttjänsten måste slutföra en tabellgenomsökning för att försöka exportera hela tabellen. Ett bra sätt att avgöra om tabellerna är optimerade för export är att köra DBCC SHOW_STATISTICS och se till att RANGE_HI_KEY inte är null och att dess värde har en bra distribution. Mer information finns i DBCC-SHOW_STATISTICS.
  • För större databaser kan BACPAC-export/import ta lång tid och kan misslyckas av olika orsaker.

Kommentar

BACPACs är inte avsedda att användas för säkerhetskopierings- och återställningsåtgärder. Azure skapar automatiskt säkerhetskopior för varje användardatabas. Mer information finns i Översikt över affärskontinuitet och Automatiserade säkerhetskopieringar i Azure SQL Database eller Automatiserade säkerhetskopieringar i Azure SQL Managed Instance.

Kommentar

Import och export med Private Link finns i förhandsversionen.

Azure-portalen

Det finns för närvarande inte stöd för att exportera en BACPAC för en databas från Azure SQL Managed Instance med hjälp av Azure-portalen. Se Överväganden.

Kommentar

Datorer som bearbetar import-/exportbegäranden som skickas via Azure-portalen eller PowerShell måste lagra BACPAC-filen samt temporära filer som genereras av Data-Tier Application Framework (DacFX). Diskutrymmet som krävs varierar avsevärt mellan databaser med samma storlek och kan kräva diskutrymme upp till tre gånger storleken på databasen. Datorer som kör import-/exportbegäran har bara 450 GB lokalt diskutrymme. Därför kan vissa begäranden misslyckas med felet There is not enough space on the disk. I det här fallet är lösningen att köra SqlPackage på en dator med tillräckligt med lokalt diskutrymme. Vi rekommenderar att du använder SQLPackage för att importera/exportera databaser som är större än 150 GB för att undvika det här problemet.

  1. Om du vill exportera en databas med azure-portalen öppnar du sidan för databasen och väljer Exportera i verktygsfältet.

    Screenshot that highlights the Export button.

  2. Ange BACPAC-filnamnet, välj ett befintligt Azure-lagringskonto och en container för exporten och ange sedan lämpliga autentiseringsuppgifter för åtkomst till källdatabasen. En SQL Server-administratörsinloggning krävs här även om du är Azure-administratör, eftersom azure-administratören inte motsvarar administratörsbehörigheter i Azure SQL Database eller Azure SQL Managed Instance.

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

  3. Välj OK.

  4. Om du vill övervaka förloppet för exportåtgärden öppnar du sidan för servern som innehåller databasen som exporteras. Under Datahantering väljer du Import/Export-historik.

SQLPackage-verktyg

Vi rekommenderar användning av SQLPackage-verktyget för skalning och prestanda i de flesta produktionsmiljöer. Du kan köra flera SqlPackage-kommandon parallellt för delmängder av tabeller för att påskynda import-/exportåtgärder.

Information om hur du exporterar en databas i SQL Database med hjälp av kommandoradsverktyget SQLPackage finns i Exportera parametrar och egenskaper. SQLPackage-verktyget är tillgängligt för Windows, macOS och Linux.

Det här exemplet visar hur du exporterar en databas med SqlPackage med Active Directory Universal Authentication:

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 är ett kostnadsfritt verktyg med öppen källkod och är tillgängligt för Windows, Mac och Linux. Tillägget "SQL Server dacpac" innehåller ett guidegränssnitt för SqlPackage-åtgärder, inklusive export och import. Mer information om hur du installerar och använder tillägget finns i SQL Server dacpac-tillägget.

SQL Server Management Studio (SSMS)

SQL Server Management Studio innehåller en guide för att exportera en databas i Azure SQL Database eller en SQL Managed Instance-databas till en BACPAC-fil. Se Exportera ett program på datanivå.

PowerShell

Det går inte att exportera en BACPAC för en databas från Azure SQL Managed Instance med hjälp av PowerShell. Se Överväganden.

Använd cmdleten New-AzSqlDatabaseExport för att skicka en exportdatabasbegäran till Azure SQL Database-tjänsten. Beroende på databasens storlek kan det ta lite tid att slutföra exportåtgärden.

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

Om du vill kontrollera status för exportbegäran använder du cmdleten Get-AzSqlDatabaseImportExportStatus . Om du kör den här cmdleten omedelbart efter att begäran vanligtvis returnerar Status: InProgress. När du ser Status: Lyckades exporten är klar.

$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

Avbryt exportbegäran

Använd kommandot Database Operations – Cancel API eller PowerShell Stop-AzSqlDatabaseActivity för att avbryta en exportbegäran. Här är ett exempel på ett PowerShell-kommando:

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

Kommentar

Om du vill avbryta exportåtgärden måste du ha någon av följande roller:

Begränsningar

  • Det går inte att exportera en BACPAC-fil till Azure Premium Storage med de metoder som beskrivs i den här artikeln.
  • Lagring bakom en brandvägg stöds inte för närvarande.
  • Oföränderlig lagring stöds för närvarande inte.
  • Azure SQL Managed Instance stöder för närvarande inte export av en databas till en BACPAC-fil med hjälp av Azure-portalen eller Azure PowerShell. Om du vill exportera en hanterad instans till en BACPAC-fil använder du SQL Server Management Studio (SSMS) eller SQLPackage.
  • För närvarande stöder inte import-/exporttjänsten Microsoft Entra-ID-autentisering när MFA krävs.
  • Import\Export services stöder endast SQL-autentisering och Microsoft Entra-ID. Import\Export är inte kompatibelt med registrering av Microsoft Identity-program.