2009-09-29 32 views
0

我正在使用SQL Server 2000,並給予一組數據(具有唯一的ID),我想找出差異與數據庫中的行,匹配唯一的ID。我也試圖儘可能保持靈活性。在SQL Server 2000中的表差異

我可以在前端使用C#/ VB來獲取參數,甚至返回一些東西。也許傳遞XML並獲得XML?

例如,我要調用一個函數:

// returns the columns that are different 
func(A, B, C) { 

} 

任何想法?

回答

3

有一個很酷的技巧,你可以用UNION使用:

SELECT MAX(tbl) AS TABLE_NAME, unique_key 
FROM (
    SELECT 'table1' AS tbl, unique_key 
    FROM table1 
    UNION ALL 
    SELECT 'table2' AS tbl, unique_key 
    FROM table2 
) AS X GROUP BY unique_key 
HAVING COUNT(*) = 1 

這將顯示其中一方或另一方具有另一方沒有的行。

這顯然可以擴大做更多。

或者,你可以(在密鑰匹配,其中的數據是不同的)做一個INNER JOINLEFT JOIN(缺少關鍵一方)和RIGHT JOIN(鑰匙丟失的除外)及UNION它們放在一起。

我實際上有一個實用程序SP(它使用一個或另一個方法取決於你需要什麼選項),它將比較任何兩個表,並有選項來設置哪些列被視爲鍵的一部分,哪些列要忽略,將每一邊限制爲一個子集等。它甚至可以選擇將差異寫入表中。

2

我會與現有的 「數據差異」 的工具去像

馬克

+0

我也想從SQL Server 2000,這些偉大的工具停止支持它之前升級。 – 2010-01-13 23:34:00

0

呀與Marc同意,有專門的工具的效果最好,像Volpet Table Diff爲SQL Server