Démarrage rapide : Importer un fichier BACPAC Ruby dans une base de données dans Azure SQL Database ou Azure SQL Managed Instance

S’APPLIQUE À : Azure SQL Database Azure SQL Managed Instance

Vous pouvez importer une base de données SQL Server dans Azure SQL Database ou SQL Managed Instance en utilisant un fichier BACPAC. Vous pouvez importer les données d’un fichier BACPAC stocké dans Stockage Blob Azure (stockage standard uniquement) ou à partir d’un stockage local à un emplacement local. Pour optimiser la vitesse d’importation en fournissant des ressources plus nombreuses et plus rapides, mettez à l’échelle votre base de données un niveau de service et une taille de calcul supérieurs pendant le processus d’importation. Vous pouvez ensuite effectuer un scale-down après l’importation.

Notes

Le niveau de compatibilité de la base de données importée est basé sur celui de la base de données source.

Important

Après avoir importé votre base de données, vous pouvez choisir de l’utiliser à son niveau de compatibilité actuel (niveau 100 pour la base de données AdventureWorks2008R2) ou à un niveau supérieur. Pour plus d’informations sur les implications et les options du fonctionnement d’une base de données à un niveau de compatibilité spécifique, consultez Niveau de compatibilité ALTER DATABASE. Consultez également ALTER DATABASE SCOPED CONFIGURATION pour plus d’informations sur des paramètres supplémentaires au niveau de la base de données relatifs aux niveaux de compatibilité.

Notes

L’importation et l’exportation à l’aide d’une liaison privée sont disponibles en version préliminaire.

En passant par le portail Azure

Regardez cette vidéo pour savoir comment importer à partir d’un fichier BACPAC sur le portail Azure ou poursuivez la lecture ci-dessous :

Le Portail Microsoft Azure prend uniquement en charge la création d’une base de données unique dans Azure SQL Database et uniquement à partir d’un fichier BACPAC stocké dans le stockage Blob Azure.

Pour migrer une base de données vers une instance managée Azure SQL à partir d’un fichier BACPAC, utilisez SQL Server Management Studio ou SQLPackage. Le portail Azure et Azure PowerShell ne sont pas actuellement pris en charge.

Notes

Les machines qui traitent les requêtes d’importation/exportation soumises par le biais du portail Microsoft Azure ou de PowerShell doivent stocker le fichier BACPAC et les fichiers temporaires générés par Data-Tier Application Framework (DacFX). L’espace disque requis varie considérablement entre bases de données de même taille, et peut nécessiter jusqu’à 3 fois la taille de la base de données. Les ordinateurs exécutant les requêtes d’importation/exportation ne disposent que de 450 Go d’espace disque local. Par conséquent, certaines demandes peuvent échouer avec l’erreur There is not enough space on the disk. Dans ce cas, la solution de contournement consiste à exécuter sqlpackage.exe sur un ordinateur ayant suffisamment d’espace disque local. Pour éviter ce problème, nous vous conseillons d’utiliser SqlPackage pour importer/exporter des bases de données de plus de 150 Go.

  1. Pour importer un fichier BACPAC dans une base de données unique à l’aide du Portail Microsoft Azure, ouvrez la page appropriée du serveur, puis, dans la barre d’outils, sélectionnez Importer la base de données.

    Database import1

  2. Sélectionnez le compte de stockage et le conteneur pour le fichier BACPAC, puis sélectionnez le fichier BACPAC à partir duquel importer.

  3. Spécifiez la taille de la nouvelle base de données (généralement la même que celle d’origine) et indiquez les informations d’identification du serveur SQL Server de destination. Pour obtenir la liste des valeurs possibles pour une nouvelle base de données dans Azure SQL Database, consultez Créer une base de données.

    Database import2

  4. Cliquez sur OK.

  5. Pour superviser la progression d’une importation, ouvrez la page du serveur de la base de données et, sous Paramètres, sélectionnez Historique d’importation/exportation. Une fois achevée, l’importation présente l’état Terminé.

    Database import status

  6. Pour vérifier que la base de données est active sur le serveur, sélectionnez Bases de données SQL et assurez-vous que la nouvelle base de données est En ligne.

Utilisation de SqlPackage

Pour importer une base de données SQL Server à l’aide de l’utilitaire de ligne de commande SqlPackage, consultez les paramètres et propriétés d’importation. SQL Server Management Studio et SQL Server Data Tools for Visual Studio incluent SqlPackage. Vous pouvez aussi télécharger la dernière version de SqlPackage sur le Centre de téléchargement Microsoft.

Pour bénéficier d’une mise à l’échelle et de performances optimales, nous vous recommandons d’utiliser SqlPackage dans la plupart des environnements de production au lieu du portail Azure. Pour consulter le billet du blog SQL Server Customer Advisory Team sur la migration de SQL Server vers Azure SQL Database à l’aide de fichiers BACPAC (en anglais), rendez-vous ici.

Le modèle de provisionnement basé sur DTU prend en charge les valeurs de taille maximale de sélection de base de données pour chaque niveau. Lorsque vous importez une base de données, utilisez l’une de ces valeurs prises en charge.

La commande SqlPackage ci-dessous importe la base de données AdventureWorks2008R2 du stockage local vers un serveur SQL logique nommé mynewserver20170403. Elle crée une base de données appelée myMigratedDatabase avec un niveau de service Premium et un objectif de service P6. Changez ces valeurs en fonction de votre environnement.

sqlpackage.exe /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

Important

Pour vous connecter à Azure SQL Database derrière un pare-feu d’entreprise, le port 1433 de ce dernier doit être ouvert. Pour vous connecter à SQL Managed Instance, vous devez avoir une connexion point à site ou une connexion Express Route.

Cet exemple montre comment importer une base de données à l’aide de SqlPackage avec l’authentification universelle Active Directory.

sqlpackage.exe /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

Utilisation de PowerShell

Notes

Une instance managée SQL ne prend actuellement pas en charge la migration d’une base de données vers une base de données d’instance à partir d’un fichier BACPAC à l’aide d’Azure PowerShell. Pour importer dans une instance managée SQL, utilisez SQL Server Management Studio ou SQLPackage.

Notes

Les machines qui traitent les requêtes d’importation/exportation soumises par le biais du portail ou de PowerShell doivent stocker le fichier bacpac et les fichiers temporaires générés par Data-Tier Application Framework (DacFX). L’espace disque requis varie considérablement parmi les bases de données de même taille, et peut prendre jusqu’à trois fois la taille de la base de données. Les ordinateurs exécutant les requêtes d’importation/exportation ne disposent que de 450 Go d’espace disque local. Par conséquent, certaines requêtes peuvent échouer avec l’erreur « Espace insuffisant sur le disque ». Dans ce cas, la solution de contournement consiste à exécuter sqlpackage.exe sur un ordinateur ayant suffisamment d’espace disque local. Pour importer/exporter des bases de données de plus de 150 Go, utilisez SqlPackage pour éviter ce problème.

Important

Le module PowerShell Azure Resource Manager (RM) est toujours pris en charge, mais tous les développements à venir sont destinés au module Az.Sql. Le module AzureRM continue à recevoir des résolutions de bogues jusqu’à au moins décembre 2020. Les arguments des commandes dans le module Az sont sensiblement identiques à ceux des modules AzureRm. Pour en savoir plus sur leur compatibilité, consultez Présentation du nouveau module Az Azure PowerShell.

Utilisez l’applet de commande New-AzSqlDatabaseImport pour soumettre une demande d’importation de base de données à Azure. Selon la taille de la base de données, l’importation peut prendre un certain temps avant d’aboutir. Le modèle de provisionnement basé sur DTU prend en charge les valeurs de taille maximale de sélection de base de données pour chaque niveau. Lorsque vous importez une base de données, utilisez l’une de ces valeurs prises en charge.

$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 "Standard" -ServiceObjectiveName "P6" `
        -AdministratorLogin "<userId>" `
        -AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)

Vous pouvez utiliser la cmdlet Get-AzSqlDatabaseImportExportStatus pour vérifier la progression de l’importation. L’exécution de l’applet de commande de suite après la demande retourne généralement Status: InProgress. L’importation est terminée dès que vous voyez 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

Conseil

Pour un autre exemple de script, consultez Importation d’une base de données à partir d’un fichier BACPAC.

Annuler la demande d’importation

Utilisez l’API Opérations sur les bases de données - Annulation ou la commande PowerShell Stop-AzSqlDatabaseActivity. Voici un exemple de commande PowerShell.

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

Limites

  • L’importation dans une base de données d’un pool élastique n’est pas prise en charge. Vous pouvez importer les données dans une base de données unique, puis déplacer cette dernière vers le pool élastique.
  • Le service d’importation/exportation ne fonctionne pas lorsque Autoriser l’accès aux services Azure est défini sur DÉSACTIVÉ. Toutefois, vous pouvez contourner le problème en exécutant manuellement sqlpackage.exe à partir d’une machine virtuelle Azure ou en effectuant l’exportation directement dans votre code à l’aide de l’API DACFx.
  • L’importation ne prend pas en charge la spécification d’une redondance de stockage de sauvegarde lors de la création d’une base de données et la création s’effectue avec la redondance de stockage de sauvegarde géo-redondante par défaut. Pour contourner ce problème, commencez par créer une base de données vide avec la redondance de stockage de sauvegarde souhaitée à l’aide de Portail Azure ou PowerShell, puis importez le BACPAC dans cette base de données vide.
  • Le stockage derrière un pare-feu n’est actuellement pas pris en charge.

Importer à l’aide d’Assistants

Vous pouvez aussi utiliser ces Assistants.

Étapes suivantes