看了一下tablediff的比較,網上有些文章說null不能比較,但是同步測試了sql 2008 的功能,發現其實能夠比較出null值的。
執行tablediff命令:sql profiler 跟蹤出以下sql:
select
[dbo
].[tmp
].[id
],binary_checksum([
dbo].[
tmp].[
account
], [
dbo].[
tmp].[
charname],[
dbo].[
tmp].[
id]) as mshash_54267293
from
[dbo
].[tmp
]with ( readuncommitted )
orderby[
dbo].[
tmp].[id]
select
[dbo
].[tmp_check
].[id
],binary_checksum([
dbo].[
tmp_check
].[account],[
dbo].[
tmp_check
].[charname
], [
dbo].[
tmp_check
].[id
]) as mshash_54267293
from
[dbo
].[tmp_check
]with ( readuncommitted )
orderby[
dbo].[
tmp_check
].[id]
判斷表中某一行的不同,使用了binary_checksum函式
按照表的某一行或表示式列表計算的二進位制校驗和值。binary_checksum 可用於檢測表中行的更改
指定對錶中的所有列進行計算。binary_checksum 在計算中忽略具有不可比資料型別的列。不可比資料型別包括text、ntext、image、cursor、xml和不可比公共語言執行庫 (clr) 使用者定義的型別。
如果發現目標庫沒有:
select
[dbo
].[tmp
].[account
],[dbo
].[tmp
].[charname
],[dbo
].[tmp
].[id
]from
[dbo
].[tmp
]with (readuncommitted) where[id
]=1執行上面語句生成 insert語句。是一條一條生成。
如果目標庫有不一樣的
select
[dbo
].[tmp_check
].[account
],[dbo
].[tmp_check
].[charname
],[dbo
].[tmp_check
].[id
]from
[dbo
].[tmp_check
]with (readuncommitted) where[id
]=4目標庫也會執行上面的查詢得出哪個列不一樣和生成更新sql
以上如果在sql 2008 中執行tablediff生成大量資料會很慢,同時也會造成記憶體溢位。
總結(適用於sql 2008 sp3):
1,tablediff 會忽略不可比較的字段
2,null也會比較出來
3,比較是先全部查詢出資料,再把不同的行查出具體資料生成insert,update,delete 語句
4,資料量大時效能影響很大
測試原理 頻率法測試拉索的原理
概 述 拉索是斜拉橋 懸索橋 吊桿拱橋等線纜體系橋梁結構的重要受力構件,因此拉索的檢測是這類橋梁檢測的重要內容。拉索檢測的引數主要包括 拉索的索力 拉索的外觀質量以及拉索的斷絲 腐蝕等質量引數。拉索索力是這類橋梁運營狀態檢測的重要引數。目前成橋拉索索力一般採用頻率法進行測試,先測試拉索頻率,再計算索...
測試 遞迴的原理
intitestindex void recursion intn else int tmain intargc,tchar argv 輸出結果 0 0 i 01 1 i 00 1 i 01 2 i 12 3 i 00 3 i 01 4 i 00 4 i 01 5 i 12 6 i 13 7 i 0...
測試原理 關注碳纖維的導電原理及測試
纖維是一種導電材料,雖然其導電性要低於傳統的金屬材料,但是作為非金屬導體其導電性還是備受青睞,尤其近年來碳纖維加熱管 碳纖維地暖等產品逐漸普及,使碳纖維成為廣為關注的電熱材料。本文詳細分析了碳纖維導電原理 導電影響因素及電阻率測試方法。碳纖維材料的導電原理 碳纖維是由微晶結構組成,石墨單晶中碳原子的...