Docker 安装SQL-SERVER2017 并启用CDC

8 篇文章 1 订阅


SQL SERVER CDC功能(变更数据监听)

查看指定SQL SERVER数据库是否开启CDC功能

# 查看GPS数据库是否开启CDC

SELECT is_cdc_enabled,CASE WHEN is_cdc_enabled=0 THEN 'CDC功能禁用' ELSE 'CDC功能启用' END 描述
FROM sys.databases
WHERE NAME = 'GPS'

//--
SELECT name,is_cdc_enabled FROM sys.databases WHERE name=‘GPS’

SELECT name,is_cdc_enabled FROM sys.databases WHERE is_cdc_enabled=1

开启sql-server agent

开启此功能CDC 才能将数据库变更捕获保存到CDC记录表

/opt/mssql/bin/mssql-conf set sqlagent.enabled true
# 设置后,需要重启服务器(docker安装 见下文)

开启CDC功能

# 使用指定库 我这里为gps
use gps
# 执行命令
EXECUTE sys.sp_cdc_enable_db

Docker 安装SQL SERVER

docker pull microsoft/mssql-server-linux:2017-latest 
# 安装
# 说明
#-e ACCEPT_EULA = Y 设置ACCEPT_EULA变量为任何值,以确认你接受最终用户许可协议。 SQL Server 映像的必需设置。

#-e MSSQL_SA_PASSWORD =<YourStrong !Passw0rd> 指定你自己的强密码至少 8 个字符并达到SQL Server 密码要求。 SQL Server 映像的必需设置。
docker run -d -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=123456aA!' -p 1433:1433 --name sqlserver2017 -v /var/lib/mssql_data:/opt/mssql_data microsoft/mssql-server-linux:2017-latest

# 进入内部 开启代理  
docker exec -it sqlserver2017 "bash"
# 内部执行以下命令
/opt/mssql/bin/mssql-conf set sqlagent.enabled true
# 退出容器
exit
# 重启容器
docker restart sqlserver2017

查看当前已经开启CDC的数据表

SELECT name,is_tracked_by_cdc FROM sys.tables WHERE is_tracked_by_cdc = 1;

开启表CDC

示例:

对'USRALMHS'表开启变更捕获

EXEC sys.sp_cdc_enable_table

@source_schema= 'dbo',      --源表架构

@source_name = 'USRALMHS',  --源表

@role_name = 'CDC_Role'     --角色(将自动创建)

GO

--如果不想控制访问角色,则@role_name必须显式设置为null。

image-20210608184336576

$operation说明

__$operation=2的情况,表示新增

__$operation=3或者4,表示更新,3表示旧值,4表示新值

__$operation=1的情况,表示删除

数据库操作详细流程

1、使用具有Sysadmin权限的用户执行以下语句:

-- 使用指定库
USE XXX
-- 执行命令
EXECUTE sys.sp_cdc_enable_db

2、当前数据库中创建变更数据捕获清理或捕获作业
EXEC [sys].[sp_cdc_add_job] @job_type = N'capture';
EXEC [sys].[sp_cdc_add_job] @job_type = N'cleanup';

3、为当前数据库中指定的源表启用变更数据捕获
 EXEC sys.sp_cdc_enable_table @source_schema= 'dbo',      --源表架构
@source_name = 'XXXXXX',  --源表
@role_name = 'XXXX'     --角色(如果这个角色没有将自动创建,也可显示指定为NULL,这样的话就不利用角色限制对更改数据的访问。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值