1. 在Ubuntu20.04中安装SQLServer数据库
快速入门:在 Ubuntu 上安装 SQL Server 并创建数据库
2. 在Ubuntu20.04中开启SQL Server Agent
在 Linux 上创建和运行 SQL Server 代理作业
3. 开启变更数据捕获
先决条件:当前版本必须可以使用SQL Server Agent、必须为sysadmin固定服务器角色的成员才允许启用
![](https://ichiblog.cn/wp-content/uploads/2024/12/图片-19.png)
Microsoft为SQLServer”启用和禁用 变更数据捕获”撰写的文档:Enable and disable change data capture
首先,要先为数据库开始CDC,并查看是否已经开启了CDC
SQL
-- 为数据库开启CDC
USE ichi
GO
EXEC sys.sp_cdc_enable_db
GO
-- 查询当前数据库是否开启了CDC
SELECT is_cdc_enabled FROM sys.databases WHERE name='ichi'
其次,为需要的表开启CDC,并查看是否正确开启
SQL
-- 为数据表开启CDC
USE ichi
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo', --架构
@source_name = N'TEACHER', --表名
@role_name = NULL, --访问角色
@filegroup_name = NULL, --特定文件组
@supports_net_changes = 1 --净更改函数
GO
--查询所有开启了CDC的表
SELECT * FROM cdc.change_tables;
执行完代码后CDC架构下会出现以下表:
![](https://ichiblog.cn/wp-content/uploads/2024/12/图片-20.png)
最后,确保我们的CDC Agent正确开启
![](https://ichiblog.cn/wp-content/uploads/2024/12/图片-21.png)
当我们捕获的表发生变更时,CDC中对应的表也会做出反馈
举例:在TEACHER表新增一行,CDC架构中对应的dbo_TEACHER_CT表也会对变更进行记录
新增TEST数据
![](https://ichiblog.cn/wp-content/uploads/2024/12/图片-22.png)
CDC做出记录
![](https://ichiblog.cn/wp-content/uploads/2024/12/图片-23-1024x168.png)