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