Comment utiliser Schema Compare pour comparer différentes définitions de base de données

Comment utiliser Schema Compare pour comparer différentes définitions de base de données

Introduction

L’une des fonctionnalités offertes par SQL Server Data Tools (SSDT) est l’utilitaire Schema Compare, qui vous permet de comparer deux définitions de bases de données. La source et la cible de la comparaison peuvent être n’importe quelle combinaison de bases de données connectées, de projets de bases de données SQL Server ou de fichiers .dacpac. Les résultats de la comparaison apparaissent sous la forme d’un ensemble d’actions à entreprendre avec la cible pour la rendre identique à la source. Une fois la comparaison terminée, vous pouvez mettre à jour directement la cible (si la cible est un projet ou une base de données) ou générer un script de mise à jour ayant le même effet.

Comparer les définitions de bases de données

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

    • Astuce: Vous pouvez également faire un clic droit sur le projet TradeDev dans l’Explorateur de solutions et sélectionner Comparer les schémas.
    • La fenêtre Comparer les schémas s’ouvre, et Visual Studio lui attribue automatiquement un nom tel que SqlSchemaCompare1.
    • Deux menus déroulants avec une flèche verte entre eux 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 bases de données pour votre source et votre cible de comparaison.
  2. Dans la liste déroulante Sélectionner une source, choisissez Sélectionner une source et la boîte de dialogue Sélectionner un schéma source s’ouvrira.

    • Si vous avez ouvert la fenêtre Comparer les schémas en faisant un clic droit sur le nom du projet, le schéma source est déjà renseigné et vous pouvez passer à l’étape 4.
  3. Sélectionnez le bouton radio Projet, puis sélectionnez le projet de base de données TradeDev que vous avez créé lors de la procédure précédente.

  4. Dans la liste déroulante Sélectionner une cible de la fenêtre Comparer les schémas, choisissez Sélectionner une cible, puis la boîte de dialogue Sélectionner un schéma cible s’ouvrira. Dans la section Schéma, sélectionnez le bouton radio Base de données, puis sélectionnez le bouton Nouvelle connexion.

  5. Dans la boîte de dialogue Propriétés de la connexion, saisissez le nom du serveur où réside la base de données TradeDev et assurez-vous que les informations d’identification appropriées sont fournies. Ensuite, sélectionnez TradeDev dans Se connecter à une base de données et sélectionnez OK.

    • Vous pouvez également sélectionner le bouton Options dans la barre d’outils de la fenêtre Comparer les schémas pour spécifier quels objets sont comparés, quels types de différences sont ignorés 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 lancer le processus de comparaison.

    • Lorsque la comparaison est terminée, les différences structurelles entre le projet et la base de données apparaissent dans le volet 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 (par exemple, Supprimer, Modifier ou Ajouter). Le volet Résultats affiche une ligne pour chaque objet de base de données qui diffère entre les définitions de bases 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 rendre l’objet cible identique à l’objet source. Si un objet a été refactoring (renommer ou déplacer vers un autre schéma), les noms source et cible sont différents, et le nom source apparaît en gras pour mettre en évidence la différence.
    • Par défaut, la liste des 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, objets intégrés). Vous pouvez sélectionner les boutons de filtre appropriés dans la barre d’outils pour afficher ces objets.
    • Pour modifier les préférences de regroupement, sélectionnez la liste déroulante Regrouper les résultats dans la barre d’outils. Sélectionnez Type pour regrouper les résultats par type d’objet (par exemple, par tables, vues ou procédures stockées).
  7. Localisez la table Products dans le groupe des tables. Sélectionnez la ligne et les définitions source et cible de la table apparaissent dans le volet Définitions d’objet avec les différences mises en évidence. Vous pouvez également développer la ligne de la table Products dans le volet Résultats pour inspecter les éléments spécifiques de la table qui diffèrent.

  8. Par défaut, toutes les différences sont incluses dans la portée de l’action Mettre à jour la cible. Vous pouvez exclure les différences que vous ne souhaitez pas synchroniser. Pour ce faire, décochez la colonne Action au centre de chaque ligne. Vous pouvez également faire un clic droit sur une ligne du volet Schéma et sélectionner Exclure. La ligne devient immédiatement grise. Au moment de mettre à jour la base de données cible, cette ligne n’est pas prise en compte pour les modifications en attente.

    • Vous pouvez également faire un clic droit sur une ligne de groupe et sélectionner Exclure tout ou Inclure tout, ce qui équivaut à décocher ou cocher toutes les différences de ce groupe. Lorsque vous regroupez les résultats par schéma, c’est une manière utile d’inclure ou d’exclure toutes les modifications apportées à un schéma spécifique.
    • Si la ligne exclue a des objets dépendants (par exemple, une ligne de Table qui est référencée par une ligne de Vue), la ligne exclue est désactivée mais sa case à cocher n’est pas désélectionnée. Une fois que toutes les lignes qui en dépendent sont décochées, la ligne désactivée sera désélectionnée. De plus, si une ligne est refactoring (renommée ou déplacée vers un autre schéma), la case à cocher est désactivée pour cette ligne et pour toutes les lignes enfants dépendantes.
  9. Pour mettre à jour le schéma de la cible, vous avez deux options. Vous pouvez mettre à jour la cible directement depuis la fenêtre Comparer les schémas 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 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 contre une base de données. Les procédures suivantes décrivent plus en détail ces options.

LIRE  Comment entrer au MIT : tout ce que vous devez savoir

Comparer les schémas avec le modèle d’automatisation de Visual Studio

  1. Ouvrez le menu Affichage, pointez sur Autres fenêtres et sélectionnez Fenêtre Commande.

  2. Dans la fenêtre de commande, tapez la commande suivante : Tools.SSDTNewSchemaComparison

Mettre à jour directement dans la fenêtre Schema Compare

  1. Sélectionnez le bouton Mettre à jour dans la barre d’outils de la fenêtre Comparer les schémas.

  2. Examinez le script de modification généré. Vous pouvez enregistrer le script en utilisant le menu Fichier/Nouveau. Cela peut être pratique dans les situations où vous n’êtes pas autorisé à mettre à jour une base de données de production, auquel cas vous pouvez transmettre le script à un administrateur de base de données pour le déploiement ultérieur.

  3. Si vous avez les autorisations nécessaires pour mettre à jour la base de données, sélectionnez le bouton Exécuter la requête dans la barre d’outils du volet d’édition pour exécuter le script.

Mise à jour par script

  1. Sélectionnez le bouton Générer un script (le quatrième à partir de la gauche) dans la barre d’outils de la fenêtre Comparer les schémas.

    • Le script généré apparaît dans une nouvelle fenêtre de l’éditeur Transact-SQL.
  2. Examinez le script de modification généré. Vous pouvez enregistrer le script en utilisant les commandes Fichier/Enregistrer ou Fichier/Enregistrer sous.

    • Un script enregistré peut être pratique dans les situations où vous n’êtes pas autorisé à mettre à jour une base de données de production. Dans ces cas, vous pouvez transmettre le script à un administrateur de base de données pour le déploiement ultérieur.
    • Alternativement, vous pouvez connecter l’éditeur Transact-SQL à un serveur approprié et exécuter le script directement. Avant de procéder à cette opération, vous devez disposer des autorisations nécessaires pour créer ou mettre à jour la base de données. Si vous avez les autorisations nécessaires pour mettre à jour la base de données, sélectionnez le bouton Exécuter dans la barre d’outils du volet d’édition pour exécuter le script.
  3. Sélectionnez le bouton Se connecter. Cette action vous permet de vous connecter au serveur actuel ou vous invite à entrer ou sélectionner un serveur dans la boîte de dialogue Se connecter au serveur. Le nom de la base de données est défini dans le script en tant que variable de commande.

  4. Inspectez le script et, si nécessaire, apportez des modifications aux variables de commande qui définissent le nom de la base de données cible et le préfixe associé, ainsi que les chemins d’accès aux fichiers.

  5. Sélectionnez le bouton Exécuter dans la barre d’outils du volet d’édition pour exécuter le script.

LIRE  Exemple de devis pour l’installation électrique d’une maison en 2023

Conclusion

En utilisant l’utilitaire Schema Compare de SQL Server Data Tools, vous pouvez facilement comparer différentes définitions de bases de données et mettre à jour la cible selon vos besoins. Cette fonctionnalité est essentielle pour maintenir la cohérence et la synchronisation entre les bases de données et les projets de bases de données.