SQLServer开启CDC功能的具体步骤

注意:

        sqlserver的cdc功能用于获取数据库中数据的变更,开启的话会有一定的资源消耗,尤其是生产系统下一定要先评估其影响,需要cdc功能配合数仓项目使用前一定要开启数据库的SQL代理。

详细步骤:

1、开启具体数据库实例的CDC
USE databaname;
GO
EXEC sys.sp_cdc_enable_db;
2、查询数据库的CDC是否正确开启
select * from sys.databases where is_cdc_enabled = 1;

如果数据库的CDC被正确开启,运行SQL后会返回下列结果

3、添加CDC功能需要的文件组和文件(必要)

注意:这是必要的,创建单独的文件组和文件后会防止其在运行过程中与数据库的主资源争夺

查询现有的文件的位置,直接在此目录下创建即可

SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('databasename');
--添加文件组
ALTER DATABASE databasename ADD FILEGROUP CDC2;

--添加文件
ALTER DATABASE databasename 
ADD FILE
(
  NAME= 'CDC',
 
  FILENAME = 'F:\CDC.ndf',
 
  SIZE = 100MB
)
TO FILEGROUP CDC2;

上述代码中,databasename是对应数据库的名称,CDC2是文件组的名称可以自定义,括号中NAME文件名的名称可以自定义,FILENAME是文件位置,以上面查询的文件的位置一致即可;上述文件组与文件创建成功后,可以再次使用查询文件位置命令,会看到返回结果中有新建的文件(需要权限够高)

4、开启具体表的CDC
EXEC sys.sp_cdc_enable_table
@source_schema = '表结构',
@source_name = '表名称',
@role_name = NULL,
@supports_net_changes = 1,
@index_name = NULL,
@captured_column_list = NULL,
@filegroup_name = '上述创建文件的名称';
5、验证表的CDC开启

方法一:查询所有开启CDC功能的表(会返回表名和状态:状态为1表示开启CDC功能)

SELECT name,is_tracked_by_cdc FROM sys.tables WHERE  is_tracked_by_cdc = '1';

方法二:查询单个表是否开启CDC(返回状态,状态为1表示成功开启CDC功能)

SELECT is_tracked_by_cdc FROM sys.tables WHERE name='表名';
6、关闭表CDC和数据库CDC

也可以直接关掉数据库CDC,对应的表CDC也会关掉
 

--关闭表CDC
EXEC sys.sp_cdc_disable_table @source_schema = '表结构', @source_name = '表名', @capture_instance = 'all';

--关闭数据库CDC
EXEC sys.sp_cdc_disable_db;

上述步骤为自己总结,如发现问题及时留言,大家一起进步!!

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值