SQL Server开启CDC的完整操作过程

写在前面

鉴于老旧数据的结构和项目都在sqlserver上存储,且迁移成本巨大,当下要为sqlserver的存储过程减负。要将一部分流式的动态数据实现实时查询并存储数仓。那在现有的数据环境下, 将sqlserver的数据通过flink 接管实现数据输出和仓库存储。

SQL Server开启CDC

数据同步的开启方式对于sqlserver来说有点特殊,集成在现有的环境中,我们的sqlserver是2012版本的
具体操作如下:

1. 将指定库的实例先开启CDC

命令:

USE database;
GO
EXEC sys.sp_cdc_enable_db

必须指定库名先开启CDC不然会报类似以下的错:
请确保已设置正确的数据库上下文,然后重试该操作。若要报告数据库已启用变更数据

执行成功之后会在sys下创建以下几张表,通过客户端,可以在系统表的目录下看到

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

客户端展示

执行之后查看对应的数据库是否已经开启,可以查看已经开启CDC的库都有那些:
命令:

select * 
from sys.databases where is_cdc_enabled = 1

2. 开启需要开启CDC的表

指定的库开启了CDC之后,可以单独指定具体某一个表来开启CDC功能,可以通过命令来实现具体某个表启用CDC
命令:

EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 't1', @role_name = null;

为第一个表启用CDC后,SQLServer生成两个Agent作业
cdc.dbname_capture
cdc.dbname_cleanup

具体的命令可以通过找到官网相关介绍来查看更多的关于sqlserver CDC的东西

查看刚刚开启CDC的表是否启用了CDC

select name, is_tracked_by_cdc 
from sys.tables where object_id = OBJECT_ID('dbo.t1')

当然,也可以查看哪些表开启了CDC

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

3. 关闭CDC功能

关闭表(“dbo.t1”)的CDC

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

禁用数据库所有实例CDC

EXEC sys.sp_cdc_disable_db; 

更详细信息参照官网

https://ververica.github.io/flink-cdc-connectors/master/content/connectors/sqlserver-cdc.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值