Kankuru regsrvr importer

Hello,

Oui je travaille avec Kankuru tous les jours, ca m’aide beaucoup au quotidien, mais je n’écris pas ceci parce que je suis le développeur ! Je pense que c’est un bon complément de SSMS. Par contre, s’il y a bien une chose qui m’ennuie vraiment dans Kankuru, c’est d’ajouter de nouveaux serveurs ! A l’époque, je voulais pouvoir gérer d’autres serveurs que des serveurs SQL Server, j’avais donc séparé l’ajout des serveurs et des instances SQL.

Il suffit de le refaire !

Oui, effectivement, je pourrais redévelopper ces interfaces pour les simplifier. Ca viendra peut être mais ce n’est pas ma priorité et surtout, je fais déjà le travail d’enregistrer les serveurs dans SSMS alors pourquoi faire le travail 2 fois.

Il y a quelques jours, sur twitter, David m’a demandé si on ne pouvait pas importer les serveurs enregistrés dans SSMS et je me suis dit que c’était une bonne idée.

Par contre, j’ai déjà testé les scans réseaux avec notamment la méthode SMO mais sans résultat probant. Je préfère ne pas passer de temps dans cette voie pour le moment.

Kankuru regsrvr Importer

kankuru regsrvr importer preview

Screenshot du script généré par Kankuru importer

J’ai réalisé ce projet Windows Forms très rapidement avec l’aide de Martial, un collègue. Le code est loin d’être beau mais il devrait vous permettre d’importer vos fichier regsrvr.

NB: Lorsque vous exportez les serveurs enregistrés, pensez à décocher cette case :

Export Regsrvr file from ssms

Exporter un fichier regsrvr depuis SSMS

Les mots de passes en authentification SQL sont encryptés donc il ne vous restera plus qu’à le remplacer par le bon.

GIthub

Je ne suis pas vraiment fier du code que j’ai écrit mais je le partage tout de même sur github.

Et pour les plus pressés, voici le fichier exe déjà compilé KankuruImporter

Il suffit d’avoir le framework 4.0 installé comme pour Kankuru.

Database Compare avec Kankuru

Qui n’a jamais été confronté à des bases de données SQL de différents environnements qui n’ont pas la même structure ?

Je travaille actuellement sur un projet de BI dans mon entreprise. Je ne suis pas seul dans l’équipe qui est composée de plusieurs développeurs. Chacun est sysadmin de l’instance de développement donc tout le monde modifie la structure des bases. Dans le DataWareHouse, certains créent des tables, d’autres modifient des vues, des indexs, des jobs, etc…

Le jour de la livraison, je découvre souvent que certaines modifications n’ont pas été scriptées et c’est à ce moment que les problèmes commencent… Sans outil adapté pour déterminer les différences entre l’environnement de développement et celui de production, je perds beaucoup de temps à déployer la nouvelle release.

Simple à réaliser ?

J’ai donc décidé d’ajouter un outil qui me convient à l’application Kankuru. A première vue, le challenge est assez simple, il suffit pour chaque objet de la base de données source de le scripter et de le comparer au script de l’objet correspondant dans la base de données cible. Oui mais :

    • Comment afficher le résultat pour que ce soit exploitable ? En effet, si je compare des centaines ou des milliers d’objets, il me faut une interface simple et efficace.
    • L’outil doit être rapide : sur une base avec des centaines d’objets, je ne peux pas attendre quelques heures pour obtenir un résultat !
    • Détecter les différences c’est bien, mais je veux voir les différences réels. Trouver un composant de différence de script s’est avéré plus compliqué que prévu.
    • L’utilisateur doit avoir un minimum de paramètres de configuration. Certains veulent certains objets, d’autres veulent faire des comparaison « Case Sensitive » ou sans les commentaires
    • Si je peux comparer les DDL des tables ou des procédures stockées, pourquoi ne pas proposer aussi de comparer également la sécurité, les jobs de l’agent, la configuration de l’instance..
    • .Et les données dans tout ça ? Si 2 tables de dimension sont identiques mais que les données ne le sont pas, ma mise en production va surement échouer, non ?

Bref, je me suis heurté à beaucoup de difficultés sur cet outil. Ce fut long mais je suis maintenant satisfait !

Ca ressemble à quoi ? Comment on s’en sert ?

L’outil est entièrement intégré à Kankuru, En ouvrant Database Compare, on retrouve donc toutes nos instances et les bases de données. Il suffit de sélectionner 2 bases et de cliquer sur le bouton « Compare » et c’est parti ! Pour l’affichage des résultats, j’ai trouvé un composant qui permet de mixer un Treeview et un GridView :

Database Compare TreeListView

Comment les objets sont scriptés ?

L’application utilise les bibliothèques SMO de Microsoft (SQL Server Management Objects) pour scripter les objets. C’est grâce à ce choix de technologie que l’outil est fiable et rapide. Bien évidemment, une fois que je récupère le script des objets il reste à trouver les éventuelles différences. Ca m’a permis de réviser mes connaissances sur les classes String, StringBuilder, etc…

Quel est le composant graphique utilisé pour surligner les différences ?

Après avoir passé de nombreuses heures de recherches et de tests de quelques composants existant, j’ai du me faire une raison : « Greg, tu vas devoir te débrouiller tout seul et mettre le nez dans les algorithmes ! »

Si dans un bloc de 10 lignes de textes j’ai un mot de différence, la ligne en question est très simple à surligner. Mais comment faire si une ligne est insérée en plein milieu ? Le décalage ne permet plus de comparer le script ligne à ligne. Je n’avais déjà pas beaucoup de cheveux sur la tête mais j’en ai quand même trouvé quelques uns pour me les arracher !

Database Compare différence des scripts

Et si je veux comparer les objets en supprimant les commentaires ?

Ou en ignorant la collation, la casse ou encore les espaces ? C’est facile, il suffit de cocher/décocher des cases !

Beaucoup d’objets à comparer

La plupart des objets SQL Server sont comparables. Je pense que vous devriez trouver votre bonheur dans la liste que je propose. L’outil permet de comparer :

  • La configuration globale de l’instance/base
  • La structure des objets
  • La sécurité
  • Les objets du SQL Agent (job, planification, opérateur, …)

Database Compare Objets à comparer

Et les données ?

Kankuru peut comparer les données de 2 tables. Mais contrairement à bon nombre d’outils, Kankuru est rapide et peu couteux en terme de ressources grâce à la magie des checksum.

Envie de le tester ?

Pour le moment, l’application est seulement en test pour quelques utilisateurs, mais elle ne devrait plus trop tarder à arriver…

Database Compare Overview

Ouverture du blog

Bonjour à tous !

Ceux qui me connaissent déjà savent que depuis plus de 2 ans je publie mes articles sur le blog Kankuru. Quoi ? Vous ne connaissez pas encore cette application que je développe et qui permet de connaitre tout ce qui se passe sur vos bases de données SQL Server ? Téléchargez la sans tarder, c’est gratuit, non intrusif et facile à utiliser. En plus, le développeur est très sympa !

Il y a beaucoup de choses à dire sur SQL Server, le développement, les performances. Dans la vrai vie, je ne suis pas que le développeur de Kankuru mais je suis DBA SQL Server (oui j’ai un vrai métier à coté !) Comme je préfère dédier le blog Kankuru aux news de l’application, aux nouveautés, aux réponses à vos questions, j’ai décidé d’en ouvrir un nouveau plus personnel et moins centré sur l’application.

Dans ce nouveau blog, je vais donc vous tenir informé sur toute l’actualité SQL Server comme par exemple la sortie de SQL Server 2014 le 1er avril, vous parler des différents outils de l’éco-système SQL Server (SSIS, SSRS, SSAS, Management Studio, etc…), de mes déboires de DBA, de mes problématiques de développement (C#, WPF, ASP.net) et de tout ce que je rencontre au quotidien. Je vous ferai donc partager toute mon expérience avec des articles, des tutoriels, des tests, etc…

Bien évidemment, je relayerai également certaines news importantes du GUSS (Groupe des Utilisateurs de SQL Server) dont je fais parti depuis février 2014. Si vous ne connaissez pas le GUSS, c’est l’association qui organise :

  • les journées SQL Server chaque année chez Microsoft
  • les SQL Saturday
  • les Webcasts mensuels (sessions techniques en direct de 30 minutes. Une bonne occasion de se former gratuitement !)
  • les afterworks tous les 2 mois car c’est important aussi de savoir se détendre 🙂 Le prochain aura lieu le 2 avril au Charly-Birdy. Ce sera un bon moyen de faire connaissance et de discuter technique.

A très bientôt pour de nouveaux articles.