Exporter vers un fichier BACPAC - Azure SQL Database et SQL Managed Instance

S’applique à : Azure SQL Database Azure SQL Managed Instance

Si vous avez besoin d’exporter une base de données afin de l’archiver ou de la déplacer vers une autre plateforme, vous pouvez exporter le schéma et les données de cette base de données vers un fichier BACPAC. Un fichier BACPAC est un fichier ZIP avec extension BACPAC contenant les métadonnées et les données de la base de données. Il peut être stocké dans Stockage Blob Azure ou dans un stockage local, à un emplacement local, puis réimporté vers Azure SQL Database, Azure SQL Managed Instance ou une instance de SQL Server.

À propos de l’installation

  • Pour qu’une exportation soit cohérente sur le plan transactionnel, vous devez vous assurer qu’aucune activité d’écriture n’a lieu pendant l’exportation, ou que vous exportez à partir d’une copie cohérente sur le plan transactionnel de votre base de données.

  • Si vous exportez dans le stockage Blob, la taille maximale d’un fichier BACPAC est de 200 Go. Pour archiver un fichier BACPAC plus volumineux, exportez-le vers le stockage local avec SqlPackage.

  • Le nom de fichier Stockage Azure ne peut pas se terminer par . et ne peut pas contenir de caractères spéciaux comme une espace ou <, >, *, %, &, :, \, /, ?. La longueur du nom de fichier doit être inférieure à 128 caractères.

  • Si l’opération d’exportation dure plus de 20 heures, elle peut être annulée. Pour améliorer les performances lors de l’exportation, vous pouvez :

    • Augmentez temporairement votre taille de calcul.
    • Interrompez toutes les activités de lecture et d’écriture lors de l’exportation.
    • Utilisez un index cluster avec des valeurs non nulles sur toutes les tables de grande taille. Sans index cluster, une exportation peut échouer si elle dure plus de 6 à 12 heures. Cela est dû au fait que les services d’exportation doivent effectuer une analyse complète de la table pour tenter de l’exporter en entier. Une bonne méthode pour déterminer si vos tables sont optimisées pour l’exportation consiste à exécuter DBCC SHOW_STATISTICS et à vérifier que RANGE_HI_KEY n’est pas nulle et que sa valeur a une bonne distribution. Pour plus d’informations, consultez DBCC SHOW_STATISTICS.
  • Pour des bases de données plus volumineuses, l’exportation et l’importation BACPAC peuvent prendre beaucoup de temps et échouer pour différentes raisons.

Remarque

Les BACPAC ne sont pas conçus pour être utilisés pour les opérations de sauvegarde et de restauration. Azure crée automatiquement des sauvegardes pour chaque base de données utilisateur. Pour plus d’informations, consultez la vue d’ensemble de la continuité d’activité et les sauvegardes automatisées dans Azure SQL Database ou les sauvegardes automatisées dans Azure SQL Managed Instance.

Remarque

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

Le portail Azure

L’exportation d’un fichier BACPAC de base de données à partir d’une instance Azure SQL Managed Instance à l’aide du portail Azure n’est actuellement pas prise en charge. Consultez les Considérations.

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’à 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 exporter une base de données à l’aide du portail Azure, ouvrez la page de votre base de données, puis cliquez sur Exporter dans la barre d’outils.

    Capture d’écran mettant en évidence le bouton Exporter.

  2. Spécifiez le nom du fichier BACPAC, sélectionnez un compte de stockage Azure existant ainsi que le conteneur pour l’exportation, puis fournissez les informations d’identification qui conviennent à des fins de connexion à la base de données source. Une connexion d’administrateur SQL Server est requise, même si vous êtes l’administrateur Azure, car un administrateur Azure ne dispose pas des mêmes autorisations dans Azure SQL Database ou Azure SQL Managed Instance.

    Capture d’écran montrant la page Exporter la base de données avec le nom d’utilisateur et le mot de passe spécifiés.

  3. Cliquez sur OK.

  4. Pour surveiller la progression de l’opération d’exportation, ouvrez la page du serveur qui contient la base de données en cours d’exportation. Sous Gestion des données, sélectionnez Importer/Exporter l’historique.

Utilitaire SQLPackage

Nous recommandons l’utilisation de l’utilitaire SQLPackage afin de bénéficier de l’évolutivité et des performances dans la plupart des environnements de production. Vous pouvez exécuter plusieurs commandes SqlPackage en parallèle pour des sous-ensembles de tables afin d’accélérer les opérations d’importation/exportation.

Pour exporter une base de données SQL Database à l’aide de l’utilitaire de ligne de commande SQLPackage, consultez Paramètres et propriétés d’exportation. L’utilitaire SQLPackage est disponible pour Windows, macOS et Linux.

Cet exemple montre comment exporter une base de données en utilisant SqlPackage avec l’authentification universelle Active Directory :

SqlPackage /a:Export /tf:testExport.BACPAC /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

Azure Data Studio

Azure Data Studio est un outil open source gratuit et disponible pour Windows, Mac 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 Extension dacpac SQL Server.

SQL Server Management Studio (SSMS)

SQL Server Management Studio inclue un assistant permettant d’exporter une base de données Azure SQL ou une base de données SQL Managed Instance vers un fichier BACPAC. Consultez Exporter une application de la couche Données.

PowerShell

L’exportation d’un fichier BACPAC d’une base de données à partir d’une instance Azure SQL Managed Instance à l’aide de PowerShell n’est pas prise en charge. Consultez les Considérations.

Utilisez la cmdlet New-AzSqlDatabaseExport pour soumettre une requête d’exportation de base de données au service Azure SQL Database. Selon la taille de votre base de données, l’opération d’exportation peut prendre plus ou moins longtemps.

$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
  -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
  -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password

Pour vérifier l’état de la requête d’exportation, utilisez la cmdlet Get-AzSqlDatabaseImportExportStatus. L’exécution immédiatement après la demande de cette cmdlet retourne généralement État : en cours. Lorsque État : réussite s’affiche, l’exportation est terminée.

$exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
[Console]::Write("Exporting")
while ($exportStatus.Status -eq "InProgress")
{
    Start-Sleep -s 10
    $exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
    [Console]::Write(".")
}
[Console]::WriteLine("")
$exportStatus

Annuler la demande d’exportation

Utilisez l’API Opérations sur les bases de données - Annulation ou la commande PowerShell Stop-AzSqlDatabaseActivity pour annuler une demande d’exportation. Voici un exemple de commande PowerShell :

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

Remarque

Pour annuler l’opération d’exportation, vous devez avoir l’un des rôles suivants :

Limites

  • L’exportation d’un fichier BACPAC vers le stockage Premium Azure en utilisant les méthodes décrites dans cet article n’est pas prise en charge.
  • Le stockage derrière un pare-feu n’est actuellement pas pris en charge.
  • Le stockage immuable n’est actuellement pas pris en charge.
  • Azure SQL Managed Instance ne prend actuellement pas en charge l’exportation d’une base de données vers un fichier BACPAC à l’aide du portail Azure ou d’Azure PowerShell. Pour exporter une instance gérée vers un fichier BACPAC, utilisez SQL Server Management Studio (SSMS) ou SQLPackage.
  • 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.