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.
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.
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.
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.
Välj OK.
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 .
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.
- Guiden Importera program på datanivå i SQL Server Management Studio.
- Guiden Importera och exportera SQL Server.
Relaterat innehåll
- Information om hur du ansluter till och frågar Azure SQL Database från Azure Data Studio finns i Snabbstart: Använda Azure Data Studio för att ansluta och köra frågor mot Azure SQL Database.
- Information om hur du ansluter till och frågar en databas i Azure SQL Database finns i Snabbstart: Azure SQL Database: Använda SQL Server Management Studio för att ansluta till och fråga efter data.
- En SQL Server Customer Advisory Team-blogg om migrering med .bacpac-filer finns i Migrera från SQL Server till Azure SQL Database med hjälp av BACPAC Files.
- En diskussion om hela SQL Server-databasmigreringsprocessen, inklusive prestandarekommendationer, finns i SQL Server-databasmigrering till Azure SQL Database.
- Information om hur du hanterar och delar lagringsnycklar och signaturer för delad åtkomst på ett säkert sätt finns i Säkerhetsguide för Azure Storage.