Quickstart: Een bacpac-bestand importeren in een database in Azure SQL Database of Azure SQL Managed Instance

Van toepassing op: Azure SQL DatabaseAzure SQL Managed Instance

U kunt een SQL Server-database importeren in Azure SQL Database of SQL Managed Instance met behulp van een BACPAC-bestand . U kunt de gegevens importeren uit een bacpac-bestand dat is opgeslagen in Azure Blob Storage (alleen standaardopslag) of uit lokale opslag op een on-premises locatie. Als u de snelheid van het importeren wilt maximaliseren door meer en snellere resources te bieden, schaalt u de database tijdens het importproces naar een hogere servicelaag en een grotere rekenkracht. U kunt vervolgens omlaag schalen nadat het importeren is voltooid.

Azure Portal gebruiken

Bekijk deze video om te zien hoe u importeert vanuit een bacpac-bestand in Azure Portal of verder leest:

Azure Portalbiedt alleen ondersteuning voor het maken van één database in Azure SQL Database en alleen vanuit een bacpac-bestand dat is opgeslagen in Azure Blob Storage.

Als u een database wilt migreren naar een beheerd exemplaar van Azure SQL vanuit een bacpac-bestand, gebruikt u SQL Server Management Studio of SQLPackage, met behulp van Azure Portal of Azure PowerShell wordt momenteel niet ondersteund.

Notitie

Machines die import-/exportaanvragen verwerken die zijn ingediend via Azure Portal of PowerShell, moeten het bacpac-bestand opslaan en tijdelijke bestanden die worden gegenereerd door het Data-Tier Application Framework (DacFX). De vereiste schijfruimte varieert aanzienlijk tussen databases met dezelfde grootte en kan schijfruimte tot drie keer de grootte van de database vereisen. Machines waarmee de import-/exportaanvraag wordt uitgevoerd, hebben slechts 450 GB lokale schijfruimte. Als gevolg hiervan kunnen sommige aanvragen mislukken met de fout There is not enough space on the disk. In dit geval is de tijdelijke oplossing het uitvoeren van SqlPackage op een computer met voldoende lokale schijfruimte. Om dit probleem te voorkomen wordt u aangeraden SqlPackage te gebruiken om databases te importeren/exporteren die groter zijn dan 150 GB.

  1. Als u vanuit een bacpac-bestand wilt importeren in een nieuwe individuele database met behulp van De Azure-portal, opent u de juiste serverpagina en selecteert u vervolgens op de werkbalk De database importeren.

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

  2. Selecteer Back-up selecteren. Kies het opslagaccount dat als host fungeert voor uw database en selecteer vervolgens het bacpac-bestand waaruit u wilt importeren.

  3. Geef de grootte van de nieuwe database op (meestal hetzelfde als die van de oorspronkelijke) en geef de doel-SQL Server-referenties op. Zie Database maken voor een lijst met mogelijke waarden voor een nieuwe database in Azure SQL Database.

    Screenshot of the Azure portal, Database import page.

  4. Selecteer OK.

  5. Als u de voortgang van het importeren wilt volgen, opent u de serverpagina van de database en selecteert u bij Instellingen de optie Geschiedenis van importeren/exporteren. Wanneer het importeren is gelukt, wordt de status Voltooid weergegeven.

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

  6. Als u wilt controleren of de database live is op de server, selecteert u SQL-databases en controleert u of de nieuwe database online is.

SqlPackage gebruiken

Voor het importeren van een SQL Server-database met behulp van het opdrachtregelprogramma SqlPackage raadpleegt u importparameters en -eigenschappen. U kunt de nieuwste SqlPackage voor Windows, macOS of Linux downloaden.

Voor schaalbaarheid en prestaties wordt u aangeraden in de meeste productieomgevingen SqlPackage te gebruiken in plaats van Azure Portal. Ga voor een blogartikel van het SQL Server-klantadviesteam over migratie met behulp van BACPAC-bestanden naar migreren van SQL Server naar Azure SQL Database met BACPAC-bestanden.

Het op DTU gebaseerde inrichtingsmodel ondersteunt de waarden voor geselecteerde databases met een maximale grootte voor elke laag. Bij het importeren van een database moet u een van deze ondersteunde waarden gebruiken.

Met de volgende SqlPackage-opdracht importeert u de AdventureWorks2008R2 database van lokale opslag naar een logische SQL-server met de naam mynewserver20170403. Er wordt een nieuwe database gemaakt die wordt aangeroepen myMigratedDatabase met een Premium-servicelaag en een P6-servicedoelstelling . Wijzig deze waarden in waarden die geschikt zijn voor uw omgeving.

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

Belangrijk

Om verbinding te maken met Azure SQL Database achter een firewall van het bedrijf, moet de firewall voor poort 1433 zijn geopend. Als u verbinding wilt maken met SQL Managed Instance, moet u een punt-naar-site-verbinding of een ExpressRoute-verbinding hebben.

Als alternatief voor gebruikersnaam en wachtwoord kunt u Microsoft Entra ID (voorheen Azure Active Directory) gebruiken. Momenteel biedt de Import/Export-service geen ondersteuning voor Microsoft Entra ID-verificatie wanneer MFA is vereist. Vervang de parameters voor gebruikersnaam en wachtwoord voor /ua:true en /tid:"yourdomain.onmicrosoft.com". In dit voorbeeld ziet u hoe u een database importeert met behulp van SqlPackage met Microsoft Entra-verificatie:

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 is een gratis opensource-hulpprogramma en is beschikbaar voor Windows, macOS en Linux. De extensie SQL Server dacpac biedt een wizardinterface voor SqlPackage-bewerkingen, waaronder exporteren en importeren. Zie de documentatie voor de SQL Server dacpac-extensie voor meer informatie over het installeren en gebruiken van de extensie.

PowerShell gebruiken

Notitie

Azure SQL Managed Instance biedt momenteel geen ondersteuning voor het migreren van een database naar een exemplaardatabase vanuit een bacpac-bestand met behulp van Azure PowerShell. Als u wilt importeren in een met SQL beheerd exemplaar, gebruikt u SQL Server Management Studio of SQLPackage.

Notitie

De machines die import-/exportaanvragen verwerken die zijn ingediend via de portal of PowerShell, moeten het bacpac-bestand opslaan, evenals tijdelijke bestanden die worden gegenereerd door Data-Tier Application Framework (DacFX). De benodigde schijfruimte varieert aanzienlijk tussen DB's met dezelfde grootte en kan tot drie keer van de grootte van de database duren. Machines waarmee de import-/exportaanvraag wordt uitgevoerd, hebben slechts 450 GB lokale schijfruimte. Als gevolg hiervan kunnen sommige aanvragen mislukken met de fout 'Er is onvoldoende ruimte op de schijf'. In dit geval is de tijdelijke oplossing het uitvoeren van SqlPackage op een computer met voldoende lokale schijfruimte. Bij het importeren/exporteren van databases die groter zijn dan 150 GB, gebruikt u SqlPackage om dit probleem te voorkomen.

Belangrijk

De module PowerShell Azure Resource Manager (RM) wordt nog steeds ondersteund, maar alle toekomstige ontwikkeling is voor de Az.Sql-module. De AzureRM-module blijft tot ten minste december 2020 bugfixes ontvangen. De argumenten voor de opdrachten in de Az-module en in de AzureRm-modules zijn vrijwel identiek. Zie Introductie van de nieuwe Az-module van Azure PowerShell voor meer informatie over de compatibiliteit van de argumenten.

Gebruik de New-AzSqlDatabaseImport-cmdlet om een aanvraag voor het importeren van een database naar Azure te verzenden. Afhankelijk van de grootte van de database kan het enige tijd duren voordat het importeren is voltooid. Het op DTU gebaseerde inrichtingsmodel ondersteunt de waarden voor geselecteerde databases met een maximale grootte voor elke laag. Bij het importeren van een database moet u een van deze ondersteunde waarden gebruiken.

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

U kunt de Get-AzSqlDatabaseImportExportStatus-cmdlet gebruiken om de voortgang van het importeren te controleren. Als de cmdlet direct na de aanvraag wordt uitgevoerd, wordt er meestal Status: InProgress geretourneerd. Het importeren is voltooid wanneer Status: Succeeded wordt weergegeven.

$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

Tip

Zie Database uit een BACPAC-bestand importeren voor een ander scriptvoorbeeld.

De importaanvraag annuleren

Gebruik de databasebewerkingen - Api annuleren of de opdracht Stop-AzSqlDatabaseActivity PowerShell, zoals in het volgende voorbeeld:

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

Vereiste machtigingen voor het annuleren van importbewerkingen

Als u de importbewerking wilt annuleren, moet u lid zijn van een van de volgende rollen:

Compatibiliteitsniveau van de nieuwe database

  • Het compatibiliteitsniveau van de geïmporteerde database is gebaseerd op het compatibiliteitsniveau van de brondatabase.
  • Nadat u de database hebt geïmporteerd, kunt u ervoor kiezen om de database te gebruiken op het huidige compatibiliteitsniveau of op een hoger niveau. Zie ALTER DATABASE Compatibility Level (Compatibiliteitsniveau ALTER DATABASE) voor meer informatie over de implicaties en opties bij het hanteren van een database op een bepaald compatibiliteitsniveau. Zie ook ALTER DATABASE SCOPED CONFIGURATION voor informatie over andere instellingen op databaseniveau met betrekking tot compatibiliteitsniveaus.

Beperkingen

  • Importeren naar een database in een elastische pool wordt niet ondersteund. U kunt gegevens importeren in één database en deze database vervolgens verplaatsen naar een elastische pool.
  • Import Export Service werkt niet wanneer Toegang tot Azure-services toestaan is ingesteld op UIT. U kunt het probleem echter omzeilen door SqlPackage handmatig uit te voeren vanaf een Azure-VM of de export rechtstreeks in uw code uit te voeren met behulp van de DacFx-API.
  • Importeren biedt geen ondersteuning voor het opgeven van een back-upopslagredundantie tijdens het maken van een nieuwe database en er wordt een standaardredundantie voor de geografisch redundante back-upopslag gemaakt. Als u dit wilt omzeilen, maakt u eerst een lege database met de gewenste redundantie voor back-upopslag met behulp van Azure Portal of PowerShell en importeert u de bacpac in deze lege database.
  • Opslag achter een firewall wordt momenteel niet ondersteund.
  • Maak tijdens het importproces geen database met dezelfde naam. Het importproces maakt een nieuwe database met de opgegeven naam.
  • Momenteel biedt de Import/Export-service geen ondersteuning voor Microsoft Entra ID-verificatie wanneer MFA is vereist.
  • Import\Export-services ondersteunen alleen SQL-verificatie en Microsoft Entra-id. Import\Export is niet compatibel met registratie van Microsoft Identity-toepassingen.

Aanvullende hulpprogramma’s

U kunt ook gebruikmaken van deze wizards.