2009-05-20 53 views
4

給定兩個已知具有相同模式的MS SQL數據庫,應該如何判斷它們是否包含相同的數據副本?如何驗證兩個SQL Server數據庫是否包含相同的數據?

我正在使用MS SQL Server 2008 Express,並使用ADO.NET API在.Net框架的C#和v2.0中進行編碼。這兩個數據庫實例都在同一個SQL服務器上。背景:我編寫的軟件可以將數據從一個數據庫導出到一組文件中,並將這些文件中的數據重新導入到數據庫的另一個副本中;我想測試在往返期間是否丟失了任何數據(更具體地說,是否在最初導出期間丟失或遺留任何數據)。

一個粗略的方法,我想是從每個數據庫中的每個表到SELECT *,然後使用客戶端代碼比較選定的記錄集。有沒有另外一種方式,這將需要更少的客戶端代碼?

我發現了關於備份和恢復數據庫以及關於選擇和插入數據的文檔,但沒有注意到有關如何驗證/證明往返已經完全成功的文檔,即如何驗證兩個數據庫中的表的兩個副本是否包含相同的數據。

回答

1

第一步是比較記錄數。您可以快速做到這一點

select count('x') from TAbleY 

您需要爲每個表執行此操作。

要比較表中的數據,我會使用CHECKSUM函數。

+0

謝謝;我現在看到還有一個CHECKSUM_AGG函數可用於對錶中的每一行進行校驗和。 http://dbwhisperer.blogspot.com/2009/02/checksumagg-very-nifty-function.html建議將CHECKSUM與CHECKSUM_AGG結合起來用於QA應用程序。 – ChrisW 2009-05-20 01:46:46

1

RedGate的SQL Data Compare可能是答案。

+0

該產品具有比我所要求的功能更多的功能,但其存在意味着可能甚至基本功能不是內置的。 – ChrisW 2009-05-20 01:44:31

1

您可以使用展鵬SQL數據比較 1>它會告訴數據的總數在你的數據庫 2的每個表>它會生成一個腳本,它會顯示哪些數據是在它的不同,使得通過執行它,你可以使數據相同。 3>它會顯示模式是否與SQL COMPARE不同 4>許多功能都很實用,您還可以同步兩個數據庫。

除此之外Visual Studio 2012爲您提供了一個選項來比較數據,你也可以試試這個

相關問題