SQL Server CDC(变更数据捕获) 配置和使用

一.配置

  1. 增加Database File
    1. 添加FileGroup

SQL Server CDC(变更数据捕获) 配置和使用_第1张图片

  1. 添加File

SQL Server CDC(变更数据捕获) 配置和使用_第2张图片

  1. 数据库开启和关闭

-- 数据库开启

ALTER AUTHORIZATION ON DATABASE::AdventureWorks TO [sa]

USEAdventureWorks

GO

exec sys.sp_cdc_enable_db

GO

-- 数据库关闭

USEAdventureWorks

GO

exec sys.sp_cdc_disable_db

GO

 

-- 查看所有开启数据库

SELECTname,is_cdc_enabled FROMsys.databasesWHEREis_cdc_enabled =1;

  1. 数据表开启和关闭

--开启

IFEXISTS(SELECT1 FROMsys.tablesWHEREname='Person'ANDis_tracked_by_cdc =0)

BEGIN

    EXEC sys.sp_cdc_enable_table

        @source_schema ='Person',-- source_schema

        @source_name ='Person',-- table_name

        @capture_instance =NULL,-- capture_instance

        @supports_net_changes =1,-- supports_net_changes

        @role_name =NULL,-- role_name

        @index_name =NULL,-- index_name

        @captured_column_list =NULL,-- captured_column_list

        @filegroup_name ='CDC'-- filegroup_name

END

 

--关闭

   EXEC sys.sp_cdc_disable_table

        @source_schema ='Person',-- source_schema

        @source_name =' Person',-- table_name

        @capture_instance ='capture_instance'-- capture_instance

 

二.SSIS使用CDC

1.初始化

如下图,需要先开发初始化的包,指定CDC 增量的开始;

SQL Server CDC(变更数据捕获) 配置和使用_第3张图片

在CDC Control Task Start中配置如下图,需要注意的点:

  • CDC Control Opertation:Mark Initial load Start(标记为开始)
  • Table to use for storing state:点击(new)新建cdc_State表用于记录同步更新点;

SQL Server CDC(变更数据捕获) 配置和使用_第4张图片

在 CDC Control End 中配置如下图,需要注意的点:

  • CDC control operation:Mark Initial load end

SQL Server CDC(变更数据捕获) 配置和使用_第5张图片

2.增量获取

通过运行以上初始化的包,当前表就完成了抓取点的增量标记,接下来就可以开发增量包,完成数据的实时增量抓取,如下图:

SQL Server CDC(变更数据捕获) 配置和使用_第6张图片

1>CDC Control Task Start

如下图:通过配置CDC Control operation:Get Processing range 操作来获取数据的增量数据;

SQL Server CDC(变更数据捕获) 配置和使用_第7张图片

2>Data Flow Task

如下图:设置在Data Flow Task中通过CDC Source组件和CDC Split组件实现数据捕获。

SQL Server CDC(变更数据捕获) 配置和使用_第8张图片

  1. CDC Source:如下图,通过配置CDC Enable table实现连接上开启CDC的表。通过配置CDC Processing Mode为Net来获取数据。

SQL Server CDC(变更数据捕获) 配置和使用_第9张图片

  1. CDC Spliter实现将数据进行拆分成增删改数据,然后导入的目标库中;

3>CDC Control End

如下图:通过配置CDC Control poertaion:Mark processed range 操作来标记结束抓取更新点;

SQL Server CDC(变更数据捕获) 配置和使用_第10张图片

3.发布为JOB

1>.指定增量同步的包

SQL Server CDC(变更数据捕获) 配置和使用_第11张图片

2>.设计同步的Schedule:设置为每10S中同步一次;

SQL Server CDC(变更数据捕获) 配置和使用_第12张图片

注意:这里还是通过跑批的方式设置计划任务,主动去轮询获取增量数据,本质上并没有做到实时获取变动,只能做到伪实时。

SQL Server 的CDC如果使用微软的SSIS进行连接,更适合用的场景为:

需要记录某张表的所有变动记录(类似触发器)

Demo地址:SQLServerCDCSSISDemo-SQLServer文档类资源-CSDN下载


你可能感兴趣的:(SQLServer,数据库,servlet,sql)