I. Présentation▲
La société Red-Gate nous a proposé de réaliser le test de plusieurs de ses applications.
Après avoir réalisé le test de ANTS Profiler, voici le test de SQL Compare.
I-A. Site officiel▲
Site officiel de SQL Compare (Red-Gate softwares). Vous trouverez toutes les informations officielles concernant ce logiciel. Vous pourrez également le télécharger à partir de cette page ou encore trouver les prix des logiciels Red-Gate.
I-B. L'utilitaire testé▲
Notre nouveau test portera sur SQL Compare. Celui-ci a pour but de permettre à un DBA ou encore à un développeur de déterminer les différences entre deux bases de données Sql Server.
Cette comparaison se fait au niveau de la structure de la base (bases, vues…). Pour tout ce qui concerne les DTS, Red-Gate propose DTS Compare dont le test sera publié très bientôt. Pour ce qui est du contenu des tables, il s'agit de Sql Data Compare. Ce dernier sera également testé prochainement.
Il est possible de comparer des bases Sql Server 7.0, mais également 8.0 plus généralement appelé Sql Server 2000.
Au niveau des prérequis, il est nécessaire de posséder sur sa machine MDAC 2.6 au minimum (disponible gratuitement sur Internet) et le framework .NET 1.x (également sur Internet gratuitement). Il ne faut rien d'autre si ce n'est Sql Server, mais cela est bien entendu évident.
II. Installation▲
Le programme d'installation est téléchargeable sur le site officiel de SQL Compare (Red-Gate softwares). Celui-ci est relativement petit puisqu'il ne fait que 9,5Mo environ. À noter qu'il s'agit d'un « bundle », c'est-à-dire que le programme d'installation inclut d'autres logiciels (SQL Data Compare et DTS Compare qui seront testés prochainement).
Tout comme ANTS Profiler, l'installation est simple et rapide et ne nécessite aucune connaissance particulière.
Lors de la première utilisation, un code d'activation vous est demandé. Si vous avez acheté une licence, vous pouvez entrer ce code afin d'activer le logiciel et d'éviter de passer par cette fenêtre intermédiaire.
Si ce n'est pas le cas, vous pourrez tout de même bénéficier de toutes les fonctionnalités, sans aucune restriction, durant quinze jours.
III. Comparaison de structures de base de données▲
III-A. Choix des bases à comparer▲
Au démarrage de l'application, un écran apparaît. Cet écran permet de choisir les bases de données à comparer. Cette comparaison peut se faire sur des instances identiques ou différentes voire même sur des serveurs distants.
Comme on le voit sur cette capture d'écran, il est ainsi possible de se connecter à toutes les bases Sql Server (dont les versions sont supportées), que ces bases utilisent un login basé sur l'authentification Windows ou encore avec le login Sql Server.
Il est par ailleurs possible de comparer une base et un snapshot ou encore deux snapshots. Pour plus d'explications sur les snapshots et sur la manière de les créer, je vous renvoie vers le paragraphe suivant.
III-B. Snapshots de bases de données▲
Comme nous venons de le voir, il est également possible de créer des snapshots (une « photo » à un instant précis) d'une base de données. Ces snapshots permettent de comparer une base de données à des instants différents. L'avantage est de voir, de manière simple, l'évolution d'une base de données.
Pour expliquer cela, prenons un exemple concret. Imaginons une base de données contenant une table avec une seule colonne. Cette table s'appelle « Example » et la colonne qu'elle contient est nommée « Colonne1 ».
Prenons dès lors un snapshot de la base de données… L'application enregistre celui-ci dans un fichier .snp.
Ensuite, nous rajouterons une colonne à notre table. Enfin, pour comparer une base avec une version précédente de cette base, il suffit de spécifier la localisation du fichier comme sur l'exemple suivant :
Les développeurs y trouvent une utilité lorsqu'ils travaillent à plusieurs sur une base de données. Effectivement la moindre modification peut avoir de lourdes répercussions sur le code qui utilise cette base. Il est ainsi beaucoup plus simple de déterminer les modifications. Les DBA y verront également le même avantage.
IV. Les éléments comparés▲
Sql Compare permet de comparer la plupart des éléments principaux (tables, vues, procédures stockées, utilisateurs…). Par ailleurs, lors de la comparaison, il est possible de faire un filtre sur les éléments que l'on souhaite afficher comme on peut le voir.
Ainsi, il est possible de se concentrer sur les objets que l'on souhaite et uniquement sur ceux-ci.
V. Options de synchronisation▲
Il est possible de spécifier les caractéristiques qui doivent ou ne doivent pas être prises en compte lors des comparaisons.
En quoi ces options peuvent être utiles? Imaginons deux bases qui contiennent les mêmes tables de base (par exemple, les tables pour un module quelconque). On souhaite les comparer. Ces tables auront, sans aucun doute, des liens avec d'autres tables, par exemple des tables de configuration ou la table des utilisateurs. Si on compare les bases sans spécifier qu'il faut ignorer les clés étrangères, l'application signalera que les tables sont différentes. Concrètement, seul le lien diffère, on pourrait donc considérer que les tables sont identiques. Ce sera le cas si l'option est cochée.
Un autre exemple pour illustrer l'utilité des options… Si deux tables contiennent les mêmes colonnes, on peut considérer qu'elles sont identiques ou l'inverse, tout dépend de la manière d'avoir écrit ses commandes INSERT. Dans le cas de INSERT INTO … VALUES, l'ordre aura de l'importance alors que dans le second cas, l'ordre n'en a aucune.
VI. Les différents types de comparaison▲
Lors de la comparaison de deux bases de données, il est possible d'afficher les différences sous différentes formes.
VI-A. Affichage à l'écran▲
Par défaut, la comparaison est visible à l'aide de deux écrans. Le premier contient le résumé de la comparaison (type de l'élément, statut de celui-ci et le nom) et permet la sélection des détails à afficher.
C'est par ailleurs cet écran qui permet de choisir les éléments à synchroniser d'une base à l'autre.
Le deuxième écran affiche les détails de la comparaison. Dans le cas d'une table, comme dans l'exemple suivant, les différences sont visibles au premier coup grâce aux scripts situés côte à côte et la mise en forme à l'aide de couleurs.
Ici, certaines lignes « sautent aux yeux ». Il s'agit des lignes surlignées en vert qui permet de montrer les différences entre les deux bases et la ligne mauve indiquant une colonne qui se trouve dans une des deux tables et pas dans l'autre.
VI-B. Génération d'un fichier .html▲
Cet utilitaire permet également de générer un fichier .html. Ce fichier utilise les avantages de JavaScript puisqu'un simple clic permet d'afficher ou de rendre invisible le résultat de la comparaison entre deux éléments.
On y verra surtout une utilité pour partager les informations avec d'autres utilisateurs, et ce de manière simple.
VI-C. Impression d'un document▲
L'application propose d'imprimer les résultats de la comparaison. Malheureusement, le rapport proposé est tout autre par rapport aux deux présentés précédemment puisque l'on trouve uniquement le résumé de la comparaison.
VII. Synchronisation des données▲
L'utilitaire ne se limite pas à comparer des bases de données, il permet également de synchroniser les structures des tables des différentes bases.
Le choix du sens de synchronisation permet de spécifier quelle est la source sur laquelle Sql Compare doit se baser.
Dès lors, Sql Compare génère un script de synchronisation qui permet de mettre à jour les structures des deux bases comparées.
Voici par exemple un des deux scripts (un pour chaque base) générés :
VIII. Conclusion▲
VIII-A. Pour qui ?▲
Comme pour ANTS Profiler, Sql Compare est destiné à tous les développeurs, mais également aux DBA qui travaillent avec Sql Server.
Comme nous l'avons déjà dit, les premiers trouveront une utilité lors du développement de leurs applications et les secondes lors de réalisation de tests principalement (par exemple, lorsque l'on réalise des tests afin de déterminer quelle solution est plus rapide qu'une autre, il est parfois difficile de voir les différentes modifications effectuées dans ce but).
VIII-B. Le prix▲
Tout comme les autres logiciels présentés par Red-Gate, le prix de ce logiciel peut paraître élevé au premier abord, mais il est tout à fait justifié. Le coût d'une analyse complète faite « à la main » peut vite être élevé. Ainsi, le coût de l'achat de la licence peut être relativement vite rentabilisé.
VIII-C. Remarques▲
L'utilitaire est simple à utiliser. Parfois même trop simple. Effectivement, une erreur peut vite arriver, c'est pourquoi je vous conseille d'utiliser ce logiciel à tête reposée. Je vous conseille également de faire vos tests sur des bases… de test.
Pensez également à effectuer une copie de sauvegarde de la base, car il ne vous sera pas possible de revenir en arrière en cas d'erreur.