flink CDC-SqlServerCDC 开启代理及SQL Server开启CDC的完整操作过程

  • 写在前面
  • SQL Server开启CDC
    • 1. 将指定库的实例先开启CDC
    • 2. 开启需要开启CDC的表
    • 3. 关闭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; 

 另外如果SqlServer没有开启SqlServer代理请看:

2021-09-06 docker中SqlServer开启代理服务,并配置cdc_docker安装sqlserver2007并启用cdc_KX-UP的博客-CSDN博客


 

补充一句,如果操作提示没权限

docker exec -it -u root sql1 /bin/bash

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值