解析SQL 2008的Change Data Capture功能(2)_Mssql數據庫教程
推薦:解讀SQL Server小知識:Processor AffinitySQL Server通常都運行在多處理器的服務器上,這一點在現在尤為普遍。原因是多內核的處理器越來越普及。 那么,在多處理器環境下,Windows操作系統(事實上是從2000開始的)通常都會將
成功提交上述命令后,就可以在數據表change_tables,captured_columns和index_columns表中看到相應的記錄,其中change_table中一條,capture_column中三條,index_columns中一條。同時cdc架構下有增加了一張新表叫做dbo_Product_CT,這張表的結構和Product表的結構有點相似,Product表中的三列在dbo_Product_CT中都有,同時dbo_Product_CT表中還增加了_$start_lsn,_$end_lsn,_$seqval,_$operation和_$update_mask五個新的字段。ITPUB個人空間-hU:i B%P%B&X
其實在存儲過程sp_cdc_enable_table_change_data_capture中有一系列的參數,在這里我們為了簡化忽略了一個參數就是@captured_column_list,這個參數可以對表中特定的某些字段啟用更新跟蹤。
5、在Product表上提交INSERT語句
INSERT INTO dbo.Product VALUES (1, N'ABC', N'A');
提交完了這條命令后,就會在lsn_time_mapping和dbo_Product_CT中分別看到一條新記錄。
其中dbo_Product_CT表中的_$operation字段的值是2,_$update_mask字段的值是0x07。 _$operation字段是代表DML操作類型,1是delete,2是insert,3是update的舊值,4是update的新值。
$update_mask字段是表示一個字段列表的掩碼,那些在DML操作中被更新了的字段位為1,而沒有更新的字段位為0。在本例中Product表一共有三列被跟蹤,所以應該是一個三位的二進制數,右邊低位第一位是第一列ProductID,低位第二位是第二列ProductName,第三位就是Category了。因為這是一次INSERT,所以更新涉及到了所有的三列,所以_$update_mask字段就應該是0x7了。
6、繼續在Product表上提交UPDATE語句
UPDATE dbo.Product SET Category = N'B' WHERE ProductID = 1;
提交完這條命令后,當然也會在lsn_time_mapping和dbo_Product_CT中看到新記錄了。不過這次lsn_time_mapping中是一條,而dbo_Product_CT中則是兩條。(為什么會這樣呢?建議大家自己試一下咯,一試就明白了。)
其中dbo_Product_CT表中的_$operation字段的值是第一條是3,第二條是4,_$update_mask字段的值兩條都是0x04。
在這次操作中我們更新的是第三列,所以_$update_mask字段就應該是0x4了。(如果我們更新的是ProductID會發現_$update_mask并非是0x1,而同樣是0x7,這估計是因為ProductID是主鍵,更新主鍵應該視同一條新的記錄。)
7、再來一次UPDATE
UPDATE dbo.Product SET Category = N'A' WHERE ProductID = 1;
提交完這條命令后,在dbo_Product_CT中又看到兩條新記錄了。其中dbo_Product_CT表中的_$operation字段的值是第一條是3,第二條是4,_$update_mask字段的值兩條都是0x04。(看來CDC確實會記錄下數據的每次修改。)
8、繼續在Product表上提交DML語句
DELETE dbo.Product WHERE ProductID = 1;
提交完了這條命令后,就會在lsn_time_mapping和dbo_Product_CT中分別看到一條新記錄。
其中dbo_Product_CT表中的_$operation字段的值是1,_$update_mask字段的值是0x07。
9、提交一個DDL試試看
分享:看Sql server 2005 找出子表樹同事在準備新老系統的切換,清空一個表的時候往往發現這個表的主鍵被另一個表用做外鍵,而系統里有太多層次的引用.所以清起來相當麻煩 用下面這個腳本可以做到找出一個特定表的引用
- sql 語句練習與答案
- 深入C++ string.find()函數的用法總結
- SQL Server中刪除重復數據的幾個方法
- sql刪除重復數據的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數據庫,提示 無法為該請求檢索數據 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數的用法實例詳解
- 相關鏈接:
- 教程說明:
Mssql數據庫教程-解析SQL 2008的Change Data Capture功能(2)。