Vue d’ensemble de la comparaison de schémas

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

L'outil de comparaison de schémas vous permet de comparer deux définitions de base de données, la source et la cible de la comparaison pouvant être n'importe quelle combinaison de base de données connectée, de projet de base de données SQL ou de fichier .dacpac. Une fois la comparaison terminée, les résultats apparaissent sous la forme d'un ensemble d'actions qui rendent la cible identique à la source, de la même manière qu'une diff de contrôle de code source. À partir d'une interface de comparaison de schémas, vous pouvez mettre à jour la cible directement (si la cible est un projet ou une base de données) ou générer un script de mise à jour qui a le même effet.

Capture d’écran des différences entre un package et une base de données en tant que concept.

La comparaison de schémas offre les fonctionnalités suivantes :

  • Comparer les schémas entre deux fichiers dacpac, bases de données ou projets SQL.
  • Afficher les résultats sous la forme d’un ensemble de mesures à prendre sur la cible pour qu’elle corresponde à la source.
  • L’exclusion sélective des actions répertoriées dans les résultats.
  • Définir les options qui contrôlent l’étendue de la comparaison.
  • Appliquer des modifications directement sur la cible ou générer un script pour appliquer les modifications ultérieurement.
  • Enregistrer la comparaison.

Fonctionnalités

Les différences entre la source et la cible s'affichent dans une grille qui permet de les examiner facilement. Une comparaison peut être faite dans les deux sens entre un modèle de base de données dérivé de l'un des éléments suivants :

  • connecter une base de données
  • Projet de base de données SQL
  • Fichier .dacpac

Dans la comparaison de schémas, vous pouvez explorer et examiner chaque différence dans la grille de résultats ou sous forme de script, où les détails des modifications sont disponibles au niveau de chaque ligne. Vous pouvez également exclure sélectivement des différences spécifiques avant de mettre à jour la cible. L'outil de comparaison de schémas est disponible dans Visual Studio, Azure Data Studio et en ligne de commande.

Options de comparaison de schémas

Les options de comparaison des schémas sont tirées des options de déploiement disponibles dans la bibliothèque DacFx .NET. Ces options sont les suivantes :

  • ignorer l’espace blanc de découpage
  • ignorer les schémas de partition
  • ignorer l’ordre des colonnes
  • supprimer les index qui ne sont pas dans la source
  • bloquer la perte éventuelle de données

Les types d'objets inclus dans la comparaison peuvent également être configurés. Ces objets comprennent les tables, les procédures stockées, les index, les autorisations, les types définis par l'utilisateur, etc.

Fichiers de comparaison de schémas

La définition de la comparaison de schémas peut être enregistrée sous la forme d'un fichier .scmp, appelé fichier de comparaison de schémas. Ce fichier stocke des informations sur la comparaison des schémas en XML et comprend :

  • les informations sur les connexions source et cible
  • les options de comparaison
  • les types d’objets exclus

Un fichier .scmp peut être ouvert dans Visual Studio ou Azure Data Studio pour exécuter facilement la même comparaison ultérieurement ou pour partager la comparaison avec d'autres personnes.

Lancer et utiliser la comparaison de schémas

  1. Dans le menu Outils de Visual Studio, sélectionnez SQL Server, puis Nouvelle comparaison de schémas.

    Dans l'Explorateur de solutions vous pouvez aussi cliquer avec le bouton droit sur le projet TradeDev, puis sélectionner Comparaison de schémas.

    La fenêtre Comparaison de schémas s'ouvre et Visual Studio lui assigne automatiquement un nom, tel que SqlSchemaCompare1.

    Deux menus déroulants séparés par une flèche verte s’affichent juste au-dessous de la barre d’outils de la fenêtre Comparer les schémas. Ces menus vous permettent de sélectionner les définitions de base de données pour vos source et cible de comparaison.

  2. Dans le menu déroulant Sélectionner une source, sélectionnez Sélectionner une source. La boîte de dialogue Sélectionner le schéma source s’ouvre.

    Si vous avez ouvert la fenêtre Comparer les schémas en cliquant avec le bouton droit sur le nom du projet, le schéma source est déjà renseigné et vous pouvez passer à l'étape 4.

    Capture d'écran de la boîte de dialogue de sélection de la source de comparaison de schémas dans Visual Studio.

  3. Terminez les sélections pour une source de comparaison de schémas en choisissant un projet, une connexion de base de données ou un fichier .dacpac. La source est la définition de la base de données que vous souhaitez utiliser comme référence pour les modifications apportées à la cible.

  4. Dans la liste déroulante Sélectionner une cible de la fenêtre Comparer les schémas, choisissez Sélectionner une cible. La boîte de dialogue Sélectionner le schéma cible s’ouvre. Terminez les sélections pour une cible de comparaison de schémas en choisissant un projet, une connexion de base de données ou un fichier .dacpac. La cible est la définition de la base de données que vous souhaitez évaluer et à laquelle vous souhaitez éventuellement apporter des modifications.

  5. Vous pouvez aussi sélectionner le bouton Options dans la barre d’outils de la fenêtre Comparer les schémas pour spécifier les objets à comparer, les types de différences à ignorer et d’autres paramètres.

  6. Sélectionnez le bouton Comparer dans la barre d’outils de la fenêtre Comparer les schémas pour démarrer la comparaison.

    Lorsque la comparaison est terminée, les différences structurelles entre le projet et la base de données apparaissent dans le volet de résultats dans la partie supérieure de la fenêtre. Par défaut, les résultats de la comparaison regroupent toutes les différences par action (notamment, Supprimer, Modifier ou Ajouter). Le volet de résultats affiche une ligne pour chaque objet de base de données qui diffère dans les définitions de base de données. Chaque ligne identifie l'objet dans le schéma source ou cible (ou les deux) et l'action à effectuer sur le schéma cible pour que l'objet cible soit identique à l'objet source. Si un objet a été refactorisé et renommé ou déplacé vers un nouveau schéma, les noms source et cible sont différents, et le nom source s’affiche dans une police en gras pour mettre en évidence la différence.

    Capture d'écran de l'interface de comparaison de schémas dans Visual Studio comparant une base de données à un projet.

    Par défaut, la liste de résultats masque les objets qui sont identiques dans les deux schémas ou qui ne sont pas pris en charge pour la mise à jour (par exemple, les objets intégrés). Vous pouvez sélectionner les boutons de filtre dans la barre d’outils pour afficher ces objets.

    Pour modifier la préférence de regroupement, sélectionnez la liste déroulante Grouper les résultats dans la barre d’outils. Sélectionnez Type pour regrouper les résultats par type d'objet (par exemple, tables, affichages ou procédures stockées).

  7. Par défaut, toutes les différences sont incluses dans l'étendue de l'action Mettre à jour la cible. Vous pouvez exclure les différences que vous ne souhaitez pas synchroniser. Pour cela, désélectionnez la colonne Action au centre de chaque ligne. Vous pouvez aussi cliquer avec le bouton droit sur une ligne dans le volet de schéma et sélectionner Exclure. La ligne est immédiatement grisée. Au moment où la comparaison de schémas est utilisée pour mettre à jour la base de données cible, cette ligne n'est pas prise en compte pour les modifications en attente.

    Vous pouvez aussi cliquer avec le bouton droit sur une ligne de groupe et sélectionner Exclure tout ou Inclure tout, ce qui revient à désactiver ou activer toutes les différences dans ce groupe. Le regroupement des résultats par schéma s'avère utile pour inclure ou exclure toutes les modifications apportées à un schéma spécifique.

    Si la ligne exclue possède des objets dépendants (par exemple, une ligne de table référencée par une ligne d'affichage), cette ligne est désactivée, mais pas sa case à cocher. Une fois toutes les lignes dépendantes de cette ligne désactivées, la ligne désactivée est désactivée. En outre, si une ligne est refactorisée (renommée ou déplacée vers un autre schéma), la case à cocher est désactivée pour cette ligne et ses lignes enfants dépendantes.

    Si vous actualisez la comparaison, les différences que vous avez choisies d’exclure sont ignorées.

Pour mettre à jour le schéma de la cible, vous avez deux options. Vous pouvez mettre à jour la cible directement à partir de la fenêtre Comparaison de schémas si la cible est une base de données ou un projet, ou générer un script de mise à jour si la cible est une base de données ou un fichier de base de données. Un script généré apparaît dans l’Éditeur Transact-SQL, à partir duquel vous pouvez inspecter le script et l’exécuter sur une base de données.

La comparaison de schémas graphiques n’est pas encore disponible dans la préversion des projets SQL de style SDK dans Visual Studio. Utilisez Azure Data Studio pour comparer les schémas.

Remarque

La comparaison de schémas n’est pas disponible dans Visual Studio Code. Utilisez Azure Data Studio ou Visual Studio pour comparer les schémas.

  1. Dans Azure Data Studio, dans la palette de commandes (ctrl/cmd+shift+P), recherchez et sélectionnez Comparer les schémas.

    Vous pouvez également cliquer avec le bouton droit sur un projet de base de données dans la vue Projets de base de données ou sur une base de données dans l'Explorateur d'objets, et sélectionner Comparer les schémas.

    Capture d’écran de l’élément de menu comparaison de schéma dans l’Explorateur d’objets Azure Data Studio.

    La fenêtre Comparer les schémas s'ouvre et une source ou une cible peut être prédéfinie en fonction du point de lancement.

    Deux boutons affichant des points de suspension séparés par une flèche apparaissent juste en dessous de la barre d'outils de la fenêtre Comparer les schémas. Ces menus vous permettent de sélectionner les définitions de base de données pour vos source et cible de comparaison.

  2. La sélection du bouton affichant des points de suspension pour la source ou la cible ouvre une boîte de dialogue dans laquelle l'une ou l'autre ou les deux peuvent être mises à jour. Terminez les sélections pour une source de comparaison de schémas en choisissant un projet, une connexion de base de données ou un fichier .dacpac. La source est la définition de la base de données que vous souhaitez utiliser comme référence pour les modifications apportées à la cible. La cible est la définition de la base de données que vous souhaitez évaluer et à laquelle vous souhaitez éventuellement apporter des modifications.

    Capture d'écran de la boîte de dialogue de sélection de la source de comparaison de schémas dans Azure Data Studio.

    Une fois les sélections terminées, sélectionnez OK pour fermer la boîte de dialogue et revenir à la fenêtre Comparer les schémas.

  3. Vous pouvez aussi sélectionner le bouton Options dans la barre d’outils de la fenêtre Comparer les schémas pour spécifier les objets à comparer, les types de différences à ignorer et d’autres paramètres.

  4. Sélectionnez le bouton Comparer dans la barre d’outils de la fenêtre Comparer les schémas pour démarrer la comparaison.

    Lorsque la comparaison est terminée, les différences structurelles entre le projet et la base de données apparaissent dans le volet de résultats dans la partie supérieure de la fenêtre. Par défaut, les résultats de la comparaison regroupent toutes les différences par action (notamment, Supprimer, Modifier ou Ajouter). Le volet de résultats affiche une ligne pour chaque objet de base de données qui diffère dans les définitions de base de données. Chaque ligne identifie l'objet dans le schéma source ou cible (ou les deux) et l'action qui sera effectuée sur le schéma cible pour que l'objet cible soit identique à l'objet source. Si un objet a été refactorisé et renommé ou déplacé vers un nouveau schéma, les noms source et cible sont différents, et le nom source s’affiche dans une police en gras pour mettre en évidence la différence.

    Capture d'écran de l'interface de comparaison de schémas dans Azure Data comparant une base de données à un projet.

  5. Par défaut, toutes les différences sont incluses dans l'étendue de l'action Mettre à jour la cible. Vous pouvez exclure les différences que vous ne souhaitez pas synchroniser. Pour cela, désélectionnez la colonne Action au centre de chaque ligne. Vous pouvez aussi cliquer avec le bouton droit sur une ligne dans le volet de schéma et sélectionner Exclure. La ligne est immédiatement grisée. Au moment où la comparaison de schémas est utilisée pour mettre à jour la base de données cible, cette ligne n'est pas prise en compte pour les modifications en attente.

    Vous pouvez aussi cliquer avec le bouton droit sur une ligne de groupe et sélectionner Exclure tout ou Inclure tout, ce qui revient à désactiver ou activer toutes les différences dans ce groupe. Le regroupement des résultats par schéma s'avère utile pour inclure ou exclure toutes les modifications apportées à un schéma spécifique.

    Si la ligne exclue possède des objets dépendants (par exemple, une ligne de table référencée par une ligne d'affichage), cette ligne est désactivée, mais pas sa case à cocher. Une fois toutes les lignes dépendantes de cette ligne désactivées, la ligne désactivée est désactivée. En outre, si une ligne est refactorisée (renommée ou déplacée vers un autre schéma), la case à cocher est désactivée pour cette ligne et ses lignes enfants dépendantes.

    Si vous actualisez la comparaison, les différences que vous avez choisies d’exclure sont ignorées.

Pour mettre à jour le schéma de la cible, vous avez deux options. Vous pouvez mettre à jour la cible directement à partir de la fenêtre Comparer les schémas avec le bouton Appliquer si la cible est une base de données ou un projet, ou vous pouvez générer un script de mise à jour si la cible est une base de données avec le bouton Générer un script. Un script généré apparaît dans l’Éditeur Transact-SQL, à partir duquel vous pouvez inspecter le script et l’exécuter sur une base de données.

La comparaison de schémas nécessite un outil graphique tel que Visual Studio ou Azure Data Studio.