【开发问题】sqlserver怎么开启cdc

执行sql

1、创建cdc

USE <database_name>
GO
EXEC sys.sp_cdc_enable_db
GO

如图:
在这里插入图片描述

​2.如上执行完毕之后,会在<database_name>数据库下的“系统表”中创建如下六个系统表:

dbo.systranschemas
cdc.change_tables
cdc.index_columns
cdc.captured_columns
cdc.lsn_time_mapping
cdc.ddl_history

在这里插入图片描述

3.验证SQLServer库级别CDC是否启用

select  is_cdc_enabled  from sys.databases where name='<database_name>';

在这里插入图片描述

4.启用SQLServer表级别CDC功能(针对某一张表)

–注意:表中必须有主键或者唯一索引

其中@source_name = ‘t_wx_source’,t_wx_source是某一个表名

IF EXISTS(SELECT 1 FROM sys.tables WHERE name='t_wx_source' AND is_tracked_by_cdc = 0)
BEGIN
    EXEC sys.sp_cdc_enable_table
        @source_schema = 'dbo', -- source_schema
        @source_name = 't_wx_source', -- table_name
        @role_name = NULL,
        @capture_instance = DEFAULT, -- capture_instance
        @supports_net_changes = 1 -- supports_net_changes
END

在这里插入图片描述

注意:
本步骤完成之后,会在database_name数据库下的“系统表”中创建一个名为"table_name_CT"的系统表,一个业务表对应一个此系统表。

5、验证SQLServer表级别是否启用

SELECT is_tracked_by_cdc FROM sys.tables WHERE name='t_wx_source';

在这里插入图片描述

select name, is_tracked_by_cdc 
from sys.tables where is_tracked_by_cdc = '1';

在这里插入图片描述

6、关闭表的CDC功能

EXEC sys.sp_cdc_disable_table @source_schema = 'dbo', @source_name = 't_wx_source', @capture_instance = 'all';

7、禁用所有CDC功能

EXEC sys.sp_cdc_disable_db; 

最终一起的sql

用Navicat不要用dbeaver,不然第一句会出错的

USE TestDataworks
GO
EXEC sys.sp_cdc_enable_db
GO

select  is_cdc_enabled  from sys.databases where name='TestDataworks';

--注意:表中必须有主键或者唯一索引
EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 't_wx_source', @role_name = null;

SELECT is_tracked_by_cdc FROM sys.tables WHERE name='t_wx_source';

select name, is_tracked_by_cdc 
from sys.tables where is_tracked_by_cdc = '1';
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SQL Server中启用Change Data Capture (CDC)(更改数据捕获)功能会对数据库产生一定的影响。 首先,启用CDC会在数据库中创建一些系统表和函数,用于存储和管理更改数据的元数据信息。这些系统表和函数占用一定的存储空间和系统资源,并且会增加数据库的复杂性。因此,在启用CDC之前,需要评估数据库的大小和性能,以确保数据库能够承受这些额外的开销。 其次,启用CDC会引入一些额外的系统作业,用于捕获和管理更改数据。这些作业会定期运行,对系统的性能产生一定的影响。如果系统的负载已经很高或者对实时性要求较高,启用CDC可能会导致系统性能下降。因此,需要根据实际情况来决定是否启用CDC以及如何配置捕获和清理作业的调度。 此外,启用CDC还会对数据库的事务日志产生一定的影响。CDC通过读取事务日志来捕获更改数据,如果数据库的事务日志非常繁忙,则可能影响到CDC的性能甚至导致CDC的延迟。在启用CDC之前,需要评估数据库的事务负载,以确保事务日志能够满足CDC的要求。 最后,启用CDC还需要对数据库中的相关对象进行一些设置和配置。这些设置和配置可能会对现有的应用程序和业务逻辑产生一定的影响,因此在启用CDC之前,需要进行充分的测试和验证。 总之,启用CDC会对SQL Server数据库产生一定的影响,包括存储空间、系统资源、性能和配置等方面。在决定是否启用CDC之前,需要综合考虑数据库的大小、性能、负载以及应用程序的需求,并进行充分的评估和测试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值