tableDiff的原理測試

2022-04-01 02:59:48 字數 2023 閱讀 8520

看了一下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 在計算中忽略具有不可比資料型別的列。不可比資料型別包括textntextimagecursorxml和不可比公共語言執行庫 (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...

測試原理 關注碳纖維的導電原理及測試

纖維是一種導電材料,雖然其導電性要低於傳統的金屬材料,但是作為非金屬導體其導電性還是備受青睞,尤其近年來碳纖維加熱管 碳纖維地暖等產品逐漸普及,使碳纖維成為廣為關注的電熱材料。本文詳細分析了碳纖維導電原理 導電影響因素及電阻率測試方法。碳纖維材料的導電原理 碳纖維是由微晶結構組成,石墨單晶中碳原子的...