Utiliser Schema Compare pour comparer différentes définitions de bases de données

Utiliser Schema Compare pour comparer différentes définitions de bases de données

SQL Server Data Tools (SSDT) comprend une utilité appelée Schema Compare que vous pouvez utiliser pour comparer deux définitions de bases de données. La source et la cible de la comparaison peuvent être n’importe quelle combinaison de base de données connectée, de projet de base de données SQL Server, de snapshot ou de fichier .dacpac. Les résultats de la comparaison apparaissent sous forme d’un ensemble d’actions à effectuer sur 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.

Les différences entre la source et la cible apparaissent dans une grille pour une revue facile. Vous pouvez explorer et examiner chaque différence dans la grille des résultats ou sous forme de script. Vous pouvez ensuite exclure sélectivement des différences spécifiques.

Vous pouvez enregistrer des comparaisons soit dans le cadre d’un projet de base de données SQL Server, soit en tant que fichier autonome. Vous pouvez également définir des options qui contrôlent la portée de la comparaison et les aspects de la mise à jour. Ensuite, vous pouvez enregistrer la comparaison afin de pouvoir facilement répéter la même comparaison ultérieurement ou l’utiliser comme point de départ pour une nouvelle comparaison.

La procédure suivante compare le schéma d’un projet de base de données avec une base de données connectée. Elle utilise des entités créées dans des procédures précédentes des sections Développement de bases de données connectées et Développement de bases de données hors ligne orienté projet.

Comparer les définitions de bases de données

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

    Alternativement, faites un clic droit sur le projet TradeDev dans l’Explorateur de solutions, puis sélectionnez Comparaison de schémas.

    La fenêtre Schema Compare 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 Schema Compare. 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 le menu déroulant Sélectionner une source, choisissez Sélectionner une source et la boîte de dialogue Sélectionner une source de schéma s’ouvre.

    Si vous avez ouvert la fenêtre Schema Compare 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éé dans la procédure précédente.

  4. Dans le menu déroulant Sélectionner une cible de la fenêtre Schema Compare, choisissez Sélectionner une cible et la boîte de dialogue Sélectionner la cible de schéma s’ouvre. 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 connexion, saisissez le nom du serveur où se trouve la base de données TradeDev et assurez-vous que les informations d’authentification correctes sont fournies. Ensuite, sélectionnez TradeDev dans Connexion à 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 Schema Compare 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 Schema Compare pour démarrer 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 (suppression, modification ou ajout, par exemple). 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é refactorisé et renommé ou déplacé dans un nouveau schéma, les noms source et cible sont différents, et le nom source apparaît en caractères 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, les 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 la préférence de regroupement, sélectionnez la liste déroulante Groupement des 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. Trouvez la table Products dans le groupe Tables. Sélectionnez la ligne et les définitions source et cible de la table apparaissent dans le volet Définitions d’objets 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 sont différents.

  8. Par défaut, toutes les différences sont incluses dans la portée de l’action Mise à jour de 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 dans le volet Schéma, puis sélectionner Exclure. La ligne est immédiatement grisée. Lorsqu’il est temps 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, il s’agit d’une façon pratique 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 référencée par une ligne de vue), la ligne exclue est désactivée mais sa case à cocher n’est pas vidée. Lorsque toutes les lignes qui en dépendent sont décochées, la ligne désactivée sera décochée. De plus, si une ligne est refactorisée (renommée ou déplacée vers un autre schéma), alors la case à cocher est désactivée pour cette ligne et pour toutes ses lignes enfants dépendantes.

    • Si vous actualisez la comparaison, les différences que vous avez choisies de sauter seront ignorées.

    • Si vous utilisez des variables SQLCMD, l’outil Schema Compare utilise les valeurs locales dans les propriétés de votre projet et les valeurs par défaut sont ignorées.

À lire aussi  Les spas rigides de qualité à moins de 10 000€ pour une expérience de bien-être à domicile : Comparatif des meilleurs choix

Pour mettre à jour le schéma de la cible, vous avez deux options. Vous pouvez mettre à jour directement la cible depuis la fenêtre Schema Compare 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 sur une base de données. Les procédures suivantes décrivent plus en détail ces options.

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

  1. Ouvrez le menu Affichage, pointez sur Autres fenêtres, puis sélectionnez Fenêtre de commandes.

  2. Dans la fenêtre de commandes, 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 Schema Compare.

  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 donner le script à un responsable de base de données pour un 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.

Mettre à jour avec un script

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

    Le script généré apparaît dans une nouvelle fenêtre Éditeur Transact-SQL.

  2. Examinez le script de modification généré. Vous pouvez enregistrer le script en utilisant la commande Fichier/Enregistrer ou la commande 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 donner le script à un responsable de base de données pour un déploiement ultérieur.

    Alternativement, vous pouvez connecter l’Éditeur Transact-SQL à un serveur approprié et exécuter le script directement. Avant d’effectuer cette procédure, vous devez avoir les 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 la requête dans la barre d’outils du volet d’édition pour exécuter le script.

  3. Sélectionnez le bouton Connecter. Cette action se connecte soit au serveur actuel, soit vous invite à saisir ou sélectionner un serveur dans la boîte de dialogue Connexion 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 des fichiers.

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

  • Rapport de dérive SqlPackage
  • Extension de comparaison de schémas Azure Data Studio
  • Classe SqlSchemaCompareTask
À lire aussi  9 astuces pour manger sans dépenser