Partager via


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.

Remarque

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

Utiliser le portail Azure

Regardez cette vidéo pour savoir comment importer à partir d’un fichier bacpac dans le portail Azure ou poursuivez la lecture :

Le portail 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.

Avertissement

Les fichiers Bacpac de plus de 4 Go générés à partir de SqlPackage peuvent ne pas être importés à partir du portail Azure ou d’Azure PowerShell avec un message d’erreur qui indique File contains corrupted data.. Il s’agit d’un problème connu, et la solution de contournement consiste à utiliser l’utilitaire de ligne de commande SqlPackage pour importer le fichier bacpac. Pour plus d’informations, consultez SqlPackage et le journal des problèmes.

Pour migrer une base de données vers Azure SQL Managed Instance à 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.

Remarque

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’à 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 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 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 Azure, ouvrez la page appropriée du serveur puis, dans la barre d’outils, sélectionnez Importer la base de données.

    Capture d’écran du portail Azure, avec la page de vue d’ensemble du serveur logique, l’importation de base de données étant sélectionnée.

  2. Sélectionnez Sélectionner la sauvegarde. Choisissez le compte de stockage qui héberge votre base de données, 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.

    Capture d’écran du portail Azure, avec la page Importation de base de données.

  4. Sélectionnez 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é.

    Capture d’écran du portail Azure, avec la page de vue d’ensemble du serveur, montrant l’état de l’importation de la base de données.

  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.

Utiliser 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. Vous pouvez télécharger la dernière version de SqlPackage pour Windows, macOS ou Linux.

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

En guise d’alternative au nom d’utilisateur et au mot de passe, vous pouvez utiliser Microsoft Entra ID (anciennement Azure Active Directory). Actuellement, le service Import/Export ne prend pas en charge l’authentification Microsoft Entra ID lorsque l’authentification multifacteur est requise. Remplacez les paramètres de nom d’utilisateur et de mot de passe pour /ua:true et /tid:"yourdomain.onmicrosoft.com". Cet exemple montre comment importer une base de données à l’aide de SqlPackage avec l’authentification Microsoft Entra :

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 est un outil open source gratuit et disponible pour Windows, macOS et Linux. L’extension « SQL Server dacpac » fournit l’interface de l’Assistant pour les opérations SqlPackage, notamment l’exportation et l’importation. Pour plus d’informations sur l’installation et l’utilisation de cette extension, consultez la documentation de l’extension dacpac SQL Server.

Utiliser PowerShell

Remarque

Azure SQL Managed Instance 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 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 "Premium" -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 de base de données - Annuler ou la commande PowerShell Stop-AzSqlDatabaseActivity, comme dans l’exemple suivant :

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

Autorisations requises pour annuler l’importation

Pour annuler l’opération d’importation, vous devez être membre de l’un des rôles suivants :

Niveau de compatibilité de la nouvelle base de données

  • Le niveau de compatibilité de la base de données importée est basé sur celui de la base de données source.
  • Après avoir importé votre base de données, vous pouvez choisir de l’utiliser à son niveau de compatibilité actuel 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 d’autres paramètres au niveau de la base de données relatifs aux niveaux de compatibilité.

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 à 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 du portail Azure ou de 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.
  • Ne créez pas de base de données portant le même nom pendant le processus d’importation. Le processus d’importation crée une nouvelle base de données portant le nom spécifié.
  • Actuellement, le service Import/Export ne prend pas en charge l’authentification Microsoft Entra ID lorsque l’authentification multifacteur est requise.
  • Les services Import\Export prennent uniquement en charge l’authentification SQL et Microsoft Entra ID. Import\Export n’est pas compatible avec l’inscription d’application Microsoft Identity.

Outils supplémentaires

Vous pouvez aussi utiliser ces Assistants.