2009-05-20 8 views
4

Étant donné deux bases de données MS SQL qui sont connues pour avoir des schémas identiques, comment devrais-je savoir si elles contiennent des copies identiques des données? J'utilise MS SQL Server 2008 Express et codage en C# et v2.0 du framework .Net, en utilisant les API ADO.NET. Les deux instances de base de données sont toutes deux sur le même serveur SQL. Contexte: J'ai écrit un logiciel pour exporter des données d'une base de données vers un ensemble de fichiers, et pour réimporter les données de ces fichiers (dans une autre copie de la base de données); Je veux tester si j'ai perdu des données pendant l'aller-retour (plus précisément, s'il y a des données perdues ou laissées en arrière lors de l'exportation initiale).Comment vérifier si deux bases de données SQL Server contiennent des données égales?

Un moyen brut je suppose serait à SELECT * de chaque table dans chaque base de données, puis de comparer les jeux d'enregistrements sélectionnés en utilisant le code côté client. Existe-t-il un autre moyen, qui nécessiterait moins de code côté client? J'ai trouvé de la documentation sur la sauvegarde et la restauration d'une base de données, ainsi que sur la sélection et l'insertion de données, mais je n'ai pas remarqué comment vérifier/prouver qu'un aller-retour a été complètement réussi, c.-à-d. si deux copies d'une table dans deux bases de données contiennent des données égales.

Répondre

1

La première étape consisterait à comparer les nombres d'enregistrements. Vous pouvez le faire avec un rapide

select count('x') from TAbleY 

Vous auriez besoin de faire cela pour chaque table.

Pour comparer les données dans les tableaux j'utiliserais la fonction CHECKSUM.

+0

Merci; Je vois maintenant qu'il y a aussi une fonction CHECKSUM_AGG qui peut être utilisée pour prendre une somme de contrôle sur chaque ligne d'une table. http://dbwhisperer.blogspot.com/2009/02/checksumagg-very-nifty-function.html suggère de combiner CHECKSUM avec CHECKSUM_AGG, pour les applications d'assurance qualité. – ChrisW

1

La réponse SQL Data Compare de RedGate pourrait être la réponse.

+0

Ce produit a plus de fonctionnalités que je ne le demande, mais son existence suggère que peut-être même la fonctionnalité de base n'est pas intégrée. – ChrisW

1

Vous pouvez utiliser Redgate SQL DATA COMPARER 1> Il dira nombre total de données dans chaque table de votre base de données 2> Il va générer un script qui affiche les données est différente afin que lors de son exécution vous peut rendre les données identiques. 3> Il va montrer si le schéma est différent par SQL COMPARER 4> Beaucoup de fonctionnalités sont utiles, vous pouvez également synchroniser deux bases de données.

Ajout à ce Visual Studio 2012 vous donne la possibilité de comparer les données, vous pouvez essayer aussi

Questions connexes