Derniers Commentaires

Rechercher

Syndication

  • Flux RSS des articles
Vendredi 6 août 2010 5 06 /08 /Août /2010 12:35

L'utilitaire tablediff (disponible à partir de Microsoft SQL server 2005) sert à comparer les données de deux tables dans le but de détecter une non-convergence ; il est particulièrement utile pour résoudre les problèmes de non-convergence dans une topologie de réplication. Cet utilitaire peut être employé à partir de l'invite de commandes ou dans un fichier de commandes pour effectuer les tâches suivantes :

 

-          Une comparaison ligne par ligne entre une table source dans une instance de Microsoft SQL Server agissant comme serveur de publication de réplication et la table de destination dans une ou plusieurs instances de SQL Server agissant comme abonnés de réplication.

-          Comparaison rapide se limitant à la comparaison du nombre de lignes et du schéma.

-          Comparaisons au niveau des colonnes.

-          Génération d'un script Transact-SQL pour corriger les différences sur le serveur de destination afin de mettre en convergence les tables source et de destination.

-          Consignation des résultats dans un fichier de sortie ou dans une table de la base de données de destination.

 

Dans le cadre de mon activté professionnelle, j’ai eu à utiliser cet utilitaire lors d’une montée de version de notre outil ETL (de Genio 4.7 vers Genio 7.0). En effet, le travail a consisté à :

 

-          Recharger les données des bases de données opérationnelles dans le Datawarehouse de production en utilsant le version 4.7 de Genio;

-          Recharger les données des bases de données opérationnelles dans le Datawarehouse de test en utilsant le version 7.0 de Genio;

-          Tester la non convergence entre les tables chargées dans les deux Datawarehouses précédents

 

 

Et très objectivement, sans l’aide de cet l’outil, il m’aurait fallu au moins dix fois de temps pour tester la non convergence des tables.

 

Limites de cet outil

-          Il ne peut pas être utilisé avec des serveurs de bases de données non SQL-Server

-          Les tables comprenant des colonnes de types de données sql_variant ne sont pas prises en charge

 

 

 

 

Syntaxe complète 

Vous trouverez la syntaxe complète sur ce lien : http://msdn.microsoft.com/fr-fr/library/ms162843.aspx   

 

 

Résultat (valeur de retour)

Valeur

Description

0

Réussite

1

Erreur critique

2

Tables différentes

 

 

 

Quelques remarques sur la confidentialité

Une mauvaise utilisation de cet utilitaire peut rapidement générer des problèmes de confidentialité. En effet, lors de l’exécution de cet utilitaire, vous devez fournir les informations de connexion aux bases de données, notamment le mot de passe.  Lors d’un lancement directement en ligne de commande, le problème ne se pose pas vraiment. En revanche, lors d’un lancement à partir d’un fichier de commandes, le problème lié à la confidentialité du mot de passe se pose alors.  En effet, généralement, l’on saisi « en dur » le mot de passe dans le fichier de commande !

 

Une solution à ce problème consiste à définir le mot de passe comme un paramètre du fichier de commandes. Vous trouverez ci-après, un exemple de fichier de commandes avec le mot de passe en paramètre.

 

@echo off

cls

echo  **********************************************************************

echo  Fichier de commandes  pour un Lancement  plus "sécurisé"

echo  de l’utilitaire tablediff.exe

echo  Par Ing.  Benjamin EPEE NGANDO

echo  **********************************************************************

 

echo.

if  "%1"=="" goto Erreur

pause  Appuyez sur une touche pour commencer la test de non-convergence

 

 

echo  **************************************************************

echo  Comparaison proprement dite de la table SALARIE

 

tablediff.exe -sourceserver  SRV-FRANCE -sourcedatabase  DWH-RH -sourcetable  SALARIE  

 -sourceuser EPEE  -sourcepassword %1 -destinationserver SRV-FRANCE -destinationdatabase  

 DWH-RH-TEST -destinationtable SALAIRE -destinationuser EPEE -destinationpassword %1  

 -c -dt -et  TABLERESULTAT_TDIFF_SALARIE

 

 

REM echo Comparaison terminée

goto  Fin

 

 

:Erreur

Rem aucun paramètre (le mot de passe donc) n’as été passé

echo  Le mot de passe n'a pas été passe en paramètre

 

:Fin

pause Appuyez sur une touche pour quitter l'écran MS-DOS

 

 

 

 

Quelques explications sur ce fichier de commandes

 

SRV-FRANCE : c’est le nom du serveur qui héberge la base de données source (dans notre exemple il héberge aussi la base de données cible)

 

DWH-RH : c’est le nom de la base de données source

 

EPEE : c’est le nom de connexion à la base de données source (dans notre exemple, il est identique à celui utilisé pour se connecter à la base de données cible).

 

DWH-RH-TEST : c’est le nom de la base de données cible

 

%1 : Représente le premier (et unique dans notre exemple) paramètre passé au fichier de commande

 

TABLERESULTAT_TDIFF_SALARIE : c’est le nom de la table qui contiendra le résultat. Cette table sera créée automatiquement - par l'utilitaire en utilisant les informations de connexion fournies -  dans la base de données cible.

 

 

 

 

Exemple d’utilisation de notre fichier de commande

 

TableDiff

 

 

 

Par Ing. EPEE NGANDO Benjamin - Publié dans : BDD
Ecrire un commentaire - Voir les 0 commentaires
Retour à l'accueil

Calendrier

Mai 2012
L M M J V S D
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
<< < > >>
 
Créer un blog gratuit sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés