Snabbstart: Importera en bacpac-fil till en databas i Azure SQL Database eller Azure SQL Managed Instance

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

Du kan importera en SQL Server-databas till Azure SQL Database eller SQL Managed Instance med hjälp av en .bacpac-fil . Du kan importera data från en bacpac-fil som lagras i Azure Blob Storage (endast standardlagring) eller från lokal lagring på en lokal plats. För att maximera importhastigheten genom att ge fler och snabbare resurser ska du skala databasen till en högre tjänstnivå och beräkningsstorlek under importprocessen. Du kan sedan skala ned när importen har slutförts.

Kommentar

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

Använda Azure-portalen

Titta på den här videon om du vill se hur du importerar från en bacpac-fil i Azure-portalen eller fortsätter läsa:

Azure-portalen har endast stöd för att skapa en enkel databas i Azure SQL Database och endast från en bacpac-fil som lagras i Azure Blob Storage.

Om du vill migrera en databas till en Azure SQL Managed Instance från en bacpac-fil använder du SQL Server Management Studio eller SQLPackage. För närvarande stöds inte azure-portalen eller Azure PowerShell.

Kommentar

Datorer som bearbetar import-/exportbegäranden som skickas via Azure-portalen eller PowerShell måste lagra bacpac-filen samt tillfälliga 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 importera från en bacpac-fil till en ny enkel databas med hjälp av Azure-portalen öppnar du lämplig serversida och väljer sedan Importera databas i verktygsfältet.

    Screenshot of the Azure portal, logical server overview page, with database import selected.

  2. Välj Välj säkerhetskopiering. Välj lagringskontot som är värd för databasen och välj sedan bacpac-filen som du vill importera från.

  3. Ange den nya databasstorleken (vanligtvis samma som ursprunget) och ange SQL Server-målautentiseringsuppgifterna. En lista över möjliga värden för en ny databas i Azure SQL Database finns i Skapa databas.

    Screenshot of the Azure portal, Database import page.

  4. Välj OK.

  5. Om du vill övervaka förloppet för en import öppnar du databasens serversida och väljer import-/exporthistorik under Inställningar. När importen har slutförts har den statusen Slutförd .

    Screenshot of the Azure portal, server overview page, showing the database import status.

  6. Om du vill kontrollera att databasen är live på servern väljer du SQL-databaser och kontrollerar att den nya databasen är Online.

Använda SqlPackage

Information om hur du importerar en SQL Server-databas med hjälp av kommandoradsverktyget SqlPackage finns i importera parametrar och egenskaper. Du kan ladda ned den senaste SqlPackage för Windows, macOS eller Linux.

För skalning och prestanda rekommenderar vi att du använder SqlPackage i de flesta produktionsmiljöer i stället för att använda Azure-portalen. En sql Server Customer Advisory Team-blogg om migrering med filer BACPAC finns i migrera från SQL Server till Azure SQL Database med hjälp av BACPAC Files.

Den DTU-baserade etableringsmodellen har stöd för att välja databasens maxstorleksvärden för varje nivå. När du importerar en databas använder du något av dessa värden som stöds.

Följande SqlPackage-kommando importerar AdventureWorks2008R2 databasen från lokal lagring till en logisk SQL-server med namnet mynewserver20170403. Den skapar en ny databas med namnet myMigratedDatabase med en Premium-tjänstnivå och ett P6-tjänstmål . Ändra dessa värden efter behov för din miljö.

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

Viktigt!

Om du vill ansluta till Azure SQL Database bakom en företagsbrandvägg måste brandväggen ha port 1433 öppen. Om du vill ansluta till SQL Managed Instance måste du ha en punkt-till-plats-anslutning eller en expressvägsanslutning.

Som ett alternativ till användarnamn och lösenord kan du använda Microsoft Entra-ID (tidigare Azure Active Directory). För närvarande stöder inte import-/exporttjänsten Microsoft Entra-ID-autentisering när MFA krävs. Ersätt parametrarna användarnamn och lösenord för /ua:true och /tid:"yourdomain.onmicrosoft.com". Det här exemplet visar hur du importerar en databas med SqlPackage med Microsoft Entra-autentisering:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /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, macOS 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 dokumentationen för SQL Server dacpac-tillägget.

Använda PowerShell

Kommentar

Azure SQL Managed Instance stöder för närvarande inte migrering av en databas till en instansdatabas från en bacpac-fil med hjälp av Azure PowerShell. Om du vill importera till en SQL-hanterad instans använder du SQL Server Management Studio eller SQLPackage.

Kommentar

Datorerna som bearbetar import-/exportbegäranden som skickas via 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 ta upp till tre gånger av databasens storlek. Datorer som kör import-/exportbegäran har bara 450 GB lokalt diskutrymme. Därför kan vissa begäranden misslyckas med felet "Det finns inte tillräckligt med utrymme på disken". I det här fallet är lösningen att köra SqlPackage på en dator med tillräckligt med lokalt diskutrymme. När du importerar/exporterar databaser som är större än 150 GB använder du SqlPackage för att undvika det här problemet.

Viktigt!

PowerShell Azure Resource Manager-modulen (RM) stöds fortfarande, men all framtida utveckling gäller för Az.Sql-modulen. AzureRM-modulen fortsätter att ta emot felkorrigeringar fram till åtminstone december 2020. Argumenten för kommandona i Az-modulen och i AzureRm-modulerna är väsentligen identiska. Mer information om deras kompatibilitet finns i Introduktion till den nya Azure PowerShell Az-modulen.

Använd cmdleten New-AzSqlDatabaseImport för att skicka en importdatabasbegäran till Azure. Beroende på databasens storlek kan det ta lite tid att slutföra importen. Den DTU-baserade etableringsmodellen har stöd för att välja databasens maxstorleksvärden för varje nivå. När du importerar en databas använder du något av dessa värden som stöds.

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

Du kan använda cmdleten Get-AzSqlDatabaseImportExportStatus för att kontrollera importens förlopp. Om du kör cmdleten omedelbart efter att begäran vanligtvis returnerar Status: InProgress. Importen är klar när du ser 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

Dricks

Ett annat skriptexempel finns i Importera en databas från en BACPAC-fil.

Avbryt importbegäran

Använd Kommandot Database Operations – Cancel API eller Stop-AzSqlDatabaseActivity PowerShell, som i följande exempel:

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

Behörigheter som krävs för att avbryta importen

Om du vill avbryta importen måste du vara medlem i någon av följande roller:

  • SQL DB-deltagarrollen eller
  • En anpassad Rollbaserad RBAC-roll för Azure-rollbaserad åtkomstkontroll med Microsoft.Sql/servers/databases/operations behörighet

Kompatibilitetsnivå för den nya databasen

  • Den importerade databasens kompatibilitetsnivå baseras på källdatabasens kompatibilitetsnivå.
  • När du har importerat databasen kan du välja att använda databasen på den aktuella kompatibilitetsnivån eller på en högre nivå. Mer information om effekterna av och alternativ för att köra en databas på en specifik kompatibilitetsnivå finns i Ändra databasens kompatibilitetsnivå. Mer information om andra inställningar på databasnivå som rör kompatibilitetsnivåer finns i ÄNDRA DATABASOMFÅNGSKONFIGURATION .

Begränsningar

  • Import till en databas i elastisk pool stöds inte. Du kan importera data till en enstaka databas och sedan flytta databasen till en elastisk pool.
  • Import Export Service fungerar inte när Tillåt åtkomst till Azure-tjänster är inställt på AV. Du kan dock kringgå problemet genom att manuellt köra SqlPackage från en virtuell Azure-dator eller utföra exporten direkt i koden med hjälp av DacFx-API:et.
  • Import har inte stöd för att ange redundans för lagring av säkerhetskopior när en ny databas skapas. Den skapas med standardinställningar för geo-redundant lagring av säkerhetskopior. Börja med att skapa en tom databas med önskad redundans för säkerhetskopieringslagring med hjälp av Azure-portalen eller PowerShell och importera sedan bacpac till den här tomma databasen.
  • Lagring bakom en brandvägg stöds inte för närvarande.
  • Under importprocessen ska du inte skapa en databas med samma namn. Importprocessen skapar en ny databas med det angivna namnet.
  • 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.

Fler verktyg

Du kan också använda de här guiderna.