2009-05-20 8 views
4

Bei zwei MS SQL-Datenbanken, von denen bekannt ist, dass sie identische Schemas haben, wie soll ich feststellen, ob sie identische Kopien der Daten enthalten?Wie überprüft man, ob zwei SQL Server-Datenbanken gleiche Daten enthalten?

Ich benutze MS SQL Server 2008 Express und Codierung in C# und v2.0 des. NET-Framework mit ADO.NET-APIs. Die beiden Datenbankinstanzen befinden sich beide auf demselben SQL Server.

Hintergrund: Ich habe Software geschrieben, um Daten aus einer Datenbank in eine Reihe von Dateien zu exportieren und die Daten aus diesen Dateien wieder zu importieren (in eine andere Kopie der Datenbank); Ich möchte testen, ob ich während des Round-Trips Daten verloren habe (genauer gesagt, ob beim ersten Export Daten verloren gegangen sind oder zurückgeblieben sind).

Eine grobe Art und Weise würde ich zu SELECT * von jeder Tabelle in jeder Datenbank sein, und dann die ausgewählten Recordsets mit clientseitigen Code zu vergleichen. Gibt es einen anderen Weg, der weniger clientseitigen Code erfordert?

Ich habe eine Dokumentation über das Sichern und Wiederherstellen einer Datenbank und über das Auswählen und Einfügen von Daten gefunden, aber noch nicht bemerkt, wie ein Round-Trip erfolgreich überprüft bzw. bewiesen werden kann, dh wie man es verifiziert ob zwei Kopien einer Tabelle in zwei Datenbanken die gleichen Daten enthalten.

Antwort

1

Der erste Schritt wäre, Datensätze zu vergleichen. Sie können dies mit einer schnellen

select count('x') from TAbleY 

tun Sie müssten dies für jede Tabelle tun. Um die Daten in den Tabellen zu vergleichen, würde ich die CHECKSUM Funktion verwenden.

+0

Dank; Ich sehe jetzt, dass es auch eine CHECKSUM_AGG-Funktion gibt, die verwendet werden kann, um eine Prüfsumme über jede Zeile in einer Tabelle zu ziehen. http://dbwhisperer.blogspot.com/2009/02/checksumagg-very-nifty-function.html schlägt vor, CHECKSUM mit CHECKSUM_AGG für QA-Anwendungen zu kombinieren. – ChrisW

1

RedGate SQL Data Compare könnte die Antwort sein.

+0

Dieses Produkt hat mehr Funktionalität, als ich möchte, aber seine Existenz legt nahe, dass vielleicht sogar die grundlegende Funktionalität nicht eingebaut ist. – ChrisW

1

können Sie Redgate SQL DATA 1 VERGLEICH verwenden> Es Gesamtanzahl der Daten in jeder Tabelle Ihrer Datenbank 2 erzählen> Es wird ein Skript erzeugen, die zeigen, welche Daten in es anders ist, so dass es Sie durch die Ausführung kann Daten gleich machen. 3> Es wird angezeigt, wenn das Schema von SQL ist VERGLEICH 4> Viele Funktionen sind nützlich, Sie können auch zwei Datenbanken synchronisieren.

Hinzufügung zu ihr Visual Studio 2012 gibt Ihnen eine Wahl, die Daten zu vergleichen, Sie können das auch versuchen