我正在使用SQL Server 2000,並給予一組數據(具有唯一的ID),我想找出差異與數據庫中的行,匹配唯一的ID。我也試圖儘可能保持靈活性。在SQL Server 2000中的表差異
我可以在前端使用C#/ VB來獲取參數,甚至返回一些東西。也許傳遞XML並獲得XML?
例如,我要調用一個函數:
// returns the columns that are different
func(A, B, C) {
}
任何想法?
我正在使用SQL Server 2000,並給予一組數據(具有唯一的ID),我想找出差異與數據庫中的行,匹配唯一的ID。我也試圖儘可能保持靈活性。在SQL Server 2000中的表差異
我可以在前端使用C#/ VB來獲取參數,甚至返回一些東西。也許傳遞XML並獲得XML?
例如,我要調用一個函數:
// returns the columns that are different
func(A, B, C) {
}
任何想法?
有一個很酷的技巧,你可以用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 JOIN
,LEFT JOIN
(缺少關鍵一方)和RIGHT JOIN
(鑰匙丟失的除外)及UNION
它們放在一起。
我實際上有一個實用程序SP(它使用一個或另一個方法取決於你需要什麼選項),它將比較任何兩個表,並有選項來設置哪些列被視爲鍵的一部分,哪些列要忽略,將每一邊限制爲一個子集等。它甚至可以選擇將差異寫入表中。
呀與Marc同意,有專門的工具的效果最好,像Volpet Table Diff爲SQL Server
我也想從SQL Server 2000,這些偉大的工具停止支持它之前升級。 – 2010-01-13 23:34:00