近期根據公司規劃,需要將以前SQLSERVER數據庫部分表中數據增量取到ORACLE數據庫中,決定使用sqlserver2008中新增的CDC(變更數據捕獲)功能來實現。具體操作步
近期根據公司規劃,需要將以前SQLSERVER數據庫部分表中數據增量取到ORACLE數據庫中,決定使用sqlserver2008中新增的CDC(變更數據捕獲)功能來實現。
具體操作步驟如下:
1. 查看指定數據庫有沒有啟用CDC功能
SELECT is_cdc_enabled FROM sys.databases WHERE name = 'jointown'
2. 在數據庫級啟用CDC功能
EXEC sys.sp_cdc_enable_db
3. 創建一個測試表
create table t1 (id int,name varchar(20));
4. 在測試表上啟用CDC
EXEC sys.sp_cdc_enable_table
@source_schema = 'dbo',
@source_name = 't1',
@role_name = NULL,
@capture_instance = NULL,
@supports_net_changes = 1,
@index_name = NULL,
@captured_column_list = NULL,
@filegroup_name = default
執行時報錯,美國服務器,需要在表中設置主鍵或唯一鍵
5. 提醒:若要CDC能正常工作,虛擬主機,除了以上配置外,需要開啟agent服務!
6. 檢查指定表上CDC是否已經啟用
SELECT is_tracked_by_cdc FROM sys.tables WHERE name = 't1' and schema_id = SCHEMA_ID('dbo')
7. 此時查看變更數據捕獲表,根據之前建的表t1,對應的存放變更數據的表為cdc.dbo_t1_ct,表中暫無任何數據
8. 在t1表中分別插入與更改一條數據后再查看
insert into t1 values (1,'a');
select * from cdc.dbo_t1_ct
通過以上操作可以看到,配置CDC過程本身來說是比較簡單的,可以很方便的在對應的CDC表中跟蹤到原表所做的數據操作,有了這些跟蹤的數據后相應的開發人員就可以很方便的將sqlserver中源庫和表中的數據捕獲后同步到對應的其它庫中,相比原來2005的觸發器的方式,在效率和方便性上有了極大的提高。
本文出自 “天知道的技術博客” 博客,請務必保留此出處
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com