sqlserver开启CDC

1、背景

由于需要学习flink cdc,并且数据选择sqlserver,所以这里记录sqlserver的cdc开启操作步骤。

2、基础前提

官方介绍地址:https://learn.microsoft.com/zh-cn/sql/relational-databases/track-changes/enable-and-disable-change-data-capture-sql-server?view=sql-server-ver15

CDC即表示变更数据捕获,变更数据捕获使用 SQL Server 代理记录表中发生的插入、更新及删除。因为sqlserver对于数据库的操作日志,不像mysql那样对外可以轻松访问,所以需要通过一个代理服务端的机制去提供类似bin-log日志的功能。

官方介绍:

变更数据捕获的更改数据源为 SQL Server 事务日志。 在将插入、更新和删除应用于跟踪的源表时,将会在日志中添加说明这些更改的项。 日志用作捕获进程的输入来源。 然后,它会读取日志,并在跟踪的表的关联更改表中添加有关更改的信息。 系统将提供一些函数,以枚举在更改表中指定范围内发生的更改,并以筛选的结果集的形式返回该值。 通常,应用程序进程使用筛选的结果集在某种外部环境中更新源表示形式。

3、Sqlserver2019开启cdc操作

  • 查看账号的权限
EXEC sp_helpsrvrolemember 'sysadmin'
  • 查看库是否开启cdc
select is_cdc_enabled,name from sys.databases where name='your db name';
  • 对数据库启动cdc
// mydb是需要开启的数据库, Go表示执行之后结束本次会话
use mydb 
GO
exec sys.sp_cdc_enable_db
Go
  • 查看数据库是否开启cdc
// 查询数据库的开启状态,结果为1代表已开启
select is_cdc_enabled,name from sys.databases;
or
select is_cdc_enabled,name from sys.databases where name = 'your database name'

此时刷新,会发现schemas下多出了cdc

  • 查看表是否开启cdc
// 查询单个表是否开启CDC(返回状态,状态为1表示成功开启CDC功能)
SELECT is_tracked_by_cdc FROM sys.tables WHERE name='Student';// 验证表的CDC开启,查询所有开启CDC功能的表(会返回表名和状态:状态为1表示开启CDC功能
SELECT name,is_tracked_by_cdc FROM sys.tables WHERE  is_tracked_by_cdc = '1';
  • 对表开启cdc
// 开启表cdc
EXEC sys.sp_cdc_enable_table@source_schema = 'dbo',@source_name = 'Student',@supports_net_changes = 0,@role_name = NULL;

正常情况下,刷新之后会发现多出来了dbo_Student_CT.

至此,库、表已开启了CDC。

  • 确认CDC agent是否已正常启动(重要
// 查看代理服务是否启动,如果结果是stop,需要到sqlserver服务器开启代理
EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',N'SQLSERVERAGENT';

如果是stop,说明未开启的,需要去sqlserver的服务器端进行开启。

--- sqlserver cdc agent服务代理开启,步骤// 1、找到sqlserver的容器信息
docker ps // 2、进入容器,需要加-uroot
docker exec -it -uroot 1710518237bb // 3、执行
/opt/mssql/bin/mssql-conf set sqlagent.enabled true // 4、完成上述操作,重启sqlserver容器
docker restart 1710518237bb --- 经过上述操作,再查看代理服务状态应该是开启了

4、测试验证

  • 在Student表中新增记录

在对应的cdc的dbo_Student_CT中可以看到新增操作记录信息。

至此,说明整个过程是成功!

5、草稿记录

以下是学习时的操作记录

--- 开启cdc, 在需要开启cdc的数据库下执行该指令
exec sys.sp_cdc_enable_db;--- 查询数据库的开启状态,结果为1代表已开启
select is_cdc_enabled,name from sys.databases;--开启SQL server agent服务(逐条执行)
sp_configure 'show advanced options', 1;
GO 
RECONFIGURE;
GO 
sp_configure 'Agent XPs', 1;
GO 
RECONFIGURE
GO --- 添加CDC功能需要的文件组和文件(必要)
--- 注意:这是必要的,创建单独的文件组和文件后会防止其在运行过程中与数据库的主资源争夺--- 查询现有的文件的位置,直接在此目录下创建即可
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('test_db');--添加文件组
ALTER DATABASE test_db ADD FILEGROUP CDC2;--添加文件,FILENAME 填写docker 容器内部的地址路径
ALTER DATABASE test_db 
ADD FILE
(NAME= 'CDC', FILENAME = '/opt/cdc/CDC.ndf',SIZE = 200MB,FILEGROWTH = 100MB -- 设定文件的自动增长量为100MB
)
TO FILEGROUP CDC2;-- 修改文件组的文件
ALTER DATABASE test_db
MODIFY FILE
(  NAME = 'CDC', FILEGROWTH = 100MB
);--- 开启表cdc
EXEC sys.sp_cdc_enable_table@source_schema = 'dbo',@source_name = 'Student',@capture_instance = NULL,@supports_net_changes = 1,@role_name = NULL, @index_name = NULL, @captured_column_list = NULL, @filegroup_name = 'CDC2';EXEC sys.sp_cdc_enable_table@source_schema = 'dbo',@source_name = 'Test',@capture_instance = NULL,--@supports_net_changes = 1,@role_name = NULL, @index_name = NULL, @captured_column_list = NULL, @filegroup_name = 'CDC2';EXEC sys.sp_cdc_enable_table@source_schema = 'dbo',@source_name = 'TestTable',@capture_instance = NULL,@supports_net_changes = 1,@role_name = NULL, @index_name = NULL, @captured_column_list = NULL, @filegroup_name = 'CDC2';--- 验证表的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='Student';--- 关闭表CDC和数据库CDC--- 关闭表CDC
EXEC sys.sp_cdc_disable_table @source_schema = 'dbo', @source_name = 'Student', @capture_instance = 'all';--关闭数据库CDC
EXEC sys.sp_cdc_disable_db;-- 查看CDC 作业配置
sys.sp_cdc_help_jobs--- 查看账号的权限
EXEC sp_helpsrvrolemember 'sysadmin';--- 查看代理服务是否启动,如果结果是stop,需要到sqlserver服务器开启代理
EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',N'SQLSERVERAGENT';--- sqlserver服务器开启代理,步骤
--- docker 安装的sqlserver
--- docker ps 找到sqlserver的容器信息
--- docker exec -it -uroot 1710518237bb  进入容器,需要加-uroot
--- /opt/mssql/bin/mssql-conf set sqlagent.enabled true 执行该脚本
--- docker restart 1710518237bb  重启sqlserver容器
--- 经过上述操作,再查看代理服务状态应该是开启了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/38888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何优化前端性能:提高网页加载速度的实用技巧

我们在前端开发中,性能优化是提高用户体验的关键因素。网页加载速度直接影响用户的满意度和留存率。本文将介绍几种优化前端性能的实用方法,帮助你提高网页加载速度。 问题描述 : 首先前端性能优化涉及多个方面,包括减少HTTP请…

专为运维工程师设计!阿里藏经阁出品的Python实战手册被我搞来了

Python 可能是极少数既简单又强大的编程语言中的一种。更重要的是,用它来编程是非常快乐的事。 今天给小伙伴们分享的是阿里“藏经阁”出品的专门给运维工程师设计的Python实战手册 废话不多说,下面把内容展示给大家 01 Python快速回顾 02 Python脚本…

【大模型】基于ChatGLM进行微调及应用 [更新中......]

文章目录 一、前言二、说明2.1 代码结构2.2 依赖包版本 三、启动对话演示3.1 命令行交互 cli_demo.py3.2 网页交互 web_demo.py 四、微调模型4.1 基于 P-Tuning v2 微调模型4.1.1 软件依赖4.1.2 下载数据集4.1.3 下载模型文件4.1.4 操作步骤 4.2 基于 Full Parameter 微调模型4…

从进程到协程,浅谈Java提高CPU利用率的发展

综合CPU利用率来讲,计算机远古时期,为提高CPU利用率,有以下概念 串行进程->并行进程->线程->线程池>->虚拟线程(协程) 一,串行进程, 早期的操作系统对任务调度,往往从最简单的实现开端,串型进程意思是对分配的一个任务,其任务能百分百占用CPU,哪怕…

前程无忧滑块

声明(lianxi a15018601872) 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 前言(lianxi …

日期时间显示网页

SweetOrange_Clock 🕘 一、简介 1、这个项目包括一个HTML文件,其中包含页面的样式和脚本。 2、页面以优雅的黑白配色为主题,突出了实用性和视觉冲击力,使得显示内容在视觉上更为突出和易于阅读。 3、这是一个日期时间显示器。通…

高通源代码版本ADK工具版本源代码release版本MDE版本介绍

0 Preface/Foreword 1 版本介绍 高通代码存放在chipcode中,网址URL:Chipcode 1.1 高通源代码版本 Bluetooth Audo芯片的高通源代码版本号(类似于分类的类名):ADK.SRC.1.0 (最新qcc307x系列及之后的芯片如…

Pycharm安装依赖

1. IDE集成的错误解决 鼠标悬停,点击 install 2. 配置环境 ctrlalts 3. 终端运行pip (要求有先有一个pip) 最好用最简单

NSE and KGE

NSE(Nash-Sutcliffe Efficiency): 解释:NSE 是衡量水文模型模拟结果与观测值之间拟合程度的指标。它计算模拟值与观测值之间的均方误差,并将其与观测值的方差进行比较。NSE 的取值范围为-∞至 1,值越接近 1…

切片的基础知识

文章目录 ● Slice 的底层实现原理?● array 和 Slice 的区别?● 拷贝大切片一定比小切片代价大吗?● Slice 深拷贝和浅拷贝?● 零切片、空切片、nil切片?● Slice 的扩容机制?● Slice 为什么不是线程安全…

WCCI 2024开幕,横滨圣地巡礼,畅游动漫与美食的世界

惊喜!WCCI 2024开幕,横滨圣地巡礼!畅游动漫与美食的世界 会议之眼 快讯 会议介绍 IEEE WCCI(World Congress on Computational Intelligence)2024,即2024年IEEE世界计算智能大会,于6月30日至…

windows USB 设备驱动开发-Host端和Device端

Windows 中的 USB 宿主端驱动程序 下图显示了适用于 Windows 的 USB 驱动程序堆栈的体系结构框图。 此图显示了适用于 USB 2.0 和 USB 3.0 的单独 USB 驱动程序堆栈。 当设备连接到 xHCI 控制器时,Windows 加载 USB 3.0 驱动程序堆栈。 Windows 为连接到 EHCI、OHC…

星辰计划01-动态代理

会话1: 什么是动态代理? 👧 什么是代理啊?👨来来来,听我细细来说 代理这个词在不同的上下文中有不同的含义,主要可以归纳为以下几类解释: 计算机网络中的代理服务器(Proxy Server&#xff0…

跨平台Ribbon UI组件QtitanRibbon全新发布v6.7.0——支持Qt 6.6.3

没有Microsoft在其办公解决方案中提供的界面,就无法想象现代应用程序,这个概念称为Ribbon UI,目前它是使应用程序与时俱进的主要属性。QtitanRibbon是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibb…

Linux_生产消费模型_Block_Queue

目录 一、互斥锁 1.1 错误的抢票 1.1.1 类的成员函数与构造 1.1.2 start 函数 1.1.3 线程的回调函数 1.1.4 main 函数 1.1.5 结果 1.2 概念 1.3 相关系统调用 1.3.1 锁的创建 1.3.2 锁的初始化 1.3.2.1 动态初始化 1.3.2.2 静态初始化 1.3.3 锁的销毁 1.3.4…

看不懂懂车大爆炸,你就错过了国产小车的王炸!

咦?咋的啦?咱中国自己的汽车品牌前几天在汽车工业协会公布的数据里一跃而起,真的是威风凛凛啊!2023年咱们自家的乘用车品牌市场份额硬生生地占了个56%,这可是半壁江山啊!特别是那些10万块钱以下的家用小车&…

32.哀家要长脑子了!

1.299. 猜数字游戏 - 力扣(LeetCode) 公牛还是挺好数的,奶牛。。。妈呀,一朝打回解放前 抓本质抓本质,有多少位非公牛数可以通过重新排列转换公牛数字,意思就是,当这个数不是公牛数字时&#x…

C++多态~~的两个特殊情况

目录 1.多态的概念 2.简单认识 (1)一个案例 (2)多态的两个满足条件 (3)虚函数的重写 (4)两个特殊情况 1.多态的概念 (1)多态就是多种形态; …

SQL 29 计算用户的平均次日留存率题解

问题截图如下: SQL建表代码: drop table if exists user_profile; drop table if exists question_practice_detail; drop table if exists question_detail; CREATE TABLE user_profile ( id int NOT NULL, device_id int NOT NULL, gender varchar…

小白也能懂:逆向分析某网站加速乐Cookie参数流程详解

加速乐作为一种常见的反爬虫技术,在网络上已有大量详尽深入的教程可供参考。然而,对于那些初次接触的人来说,直接面对它可能仍会感到困惑。 声明 本文仅用于学习交流,学习探讨逆向知识,欢迎私信共享学习心得。如有侵权…