sqlserver cdc實現資料增量抽取

2022-08-24 15:30:16 字數 2446 閱讀 5461

--

建立測試庫

create

database

test;

--建立配置表

create

table test..time_config(tb varchar(20) primary

key,enddate binary(10

));--

建立業務表

create

table test..tb_s (id int

primary

key,name varchar(20)); --

原表create

table test..tb_t (id int

primary

key,name varchar(20),isdeleted int); --

目標表--

給配置表初始時間

insert

into

test..time_config

select

'tb_t

'as tb,max(start_lsn) as enddate from test.[

cdc].--

開啟cdc

usetest

goexec sys.sp_cdc_enable_db --

開啟庫級別cdc

exec sys.sp_cdc_enable_table @source_schema='

dbo', @source_name='

tb_s

', @role_name

=null; --

開啟表cdc

go--

增量實現儲存過程

create

proc cdc_tb as

declare

@time_begin

binary(10

),@time_end

binary(10

)select

@time_begin

=max(enddate) from test.dbo.time_config --

上次結束時間,即本次開始時間

select

@time_end

=max(start_lsn) from test.[

cdc].--

獲取最大時間,即本次結束時間

--抽取增量資料

select id,name,case

when __$operation=

1then

1else

0end

as isdeleted into #tb_import from

(select row_number()over(partition by id orderby[

__$start_lsn

]desc,__$seqval,__$operation desc ) as rn,*

from test.[

cdc].[

dbo_tb_s_ct

]where

[__$start_lsn

]>

@time_begin

and[

__$start_lsn

]<=

@time_end) t1 where rn=1;

delete

from test..tb_t where

exists (select

*from

#tb_import);

insert

into test..tb_t select

*from

#tb_import;

update test.dbo.time_config set enddate=

@time_end

where tb=

'tb_t

';--

將本次結束時間存入配置表;

declare

@count

intselect

@count

=count(1) from

#tb_import

print('更新'

+cast(@count

asvarchar(10))+

'條記錄')

--測試新增:

insert

into

tb_s

select

1,'aaa'--

修改update tb_s set name=

'bbb

'where id=1--

刪除delete

from tb_s where id=

1select

*from

tb_s

exec cdc_tb --

建立job 定時作業

select

*from

tb_t

SQL SERVER CDC變更資料捕獲

sqlserver中記錄資料變更的四個方法 觸發器 output子句 變更資料捕獲 change data capture 功能 同步更改跟蹤。這裡記錄下cdc 變更資料捕獲可記錄應用於 sql server 表的插入 更新和刪除活動。對資料庫中的某張表啟用變更資料捕獲,例子 create data...

使用contentProvider實現資料共享

如何使用contentprovider 1.建立繼承contentprovider的類。並且實現 oncreate insert delete update query gettype public class dictprovidertest extends contentprovider 返回指...

IOS UITableView 實現LOL資料展示

本節重點 了解uitableview 的基本屬性 了解kvc.其實 我也不是很了解 效果圖 示例 控制器 sjviewcontroller.m 03.lol demo created by sj.abnormal on 15 2 7.import sjviewcontroller.h import ...