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.
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.
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.
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.
Sélectionnez OK.
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é.
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 :
- Le rôle Contributeur de base de données SQL ou
- Un rôle RBAC de contrôle d’accès en fonction du rôle Azure personnalisé avec l’autorisation
Microsoft.Sql/servers/databases/operations
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.
- Assistant Importation de l’application de la couche Données dans SQL Server Management Studio.
- Assistant Importation et Exportation de SQL Server.
Contenu connexe
- Pour savoir comment vous connecter et interroger Azure SQL Database à partir d’Azure Data Studio, consultez Démarrage rapide : Utiliser Azure Data Studio pour se connecter à Azure SQL Database et l’interroger.
- Pour savoir comment vous connecter à une base de données dans Azure SQL Database et comment l’interroger, consultez Démarrage rapide : Azure SQL Database : Utiliser SQL Server Management Studio pour se connecter et interroger des données.
- 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, rendez-vous ici.
- Pour obtenir une description de l’ensemble du processus de migration de base de données SQL Server ainsi que des recommandations relatives aux performances, consultez Migration de base de données SQL Server vers Azure SQL Database.
- Pour savoir comment gérer et partager de façon sécurisée les clés de stockage et les signatures d’accès partagé, consultez le Guide de sécurité de Stockage Azure.