二、sqlserver开启cdc功能

一、开启数据库cdc功能

1、查看是否开启cdc

SELECT name,is_cdc_enabled FROM sys.databases WHERE name = 'CDC_DB'

2、执行cdc

EXECUTE sys.sp_cdc_enable_db;   #执行开始cdc

3、查询是否启用日志

SELECT is_cdc_enabled,CASE WHEN is_cdc_enabled=0 THEN 'CDC功能禁用' ELSE 'CDC功能启用' END 描述
FROM sys.databases     
WHERE NAME = 'ecis'     # 数据库名

示例:

4、启动sqlserver代理

 

 

运行一下代码:

EXEC master.dbo.xp_servicecontrol N'QUERYSTATE', N'SQLSERVERAGENT'

 

开启表的cdc功能:

https://blog.csdn.net/m0_37693200/article/details/118762972

  

 

 

二、调试cdc命令

 

开启sqlserver cdc功能

create table classify    
 (
     id        int primary key identity(1,1),    -- 主键标识,从1开始,步长1增长
    name    nvarchar(20) not null            -- not null 非空
)
-- 查看表的CDC状态
select name,is_tracked_by_cdc from sys.tables where name = 'demo';

-- 查看库的CDC状态
select is_cdc_enabled, name from  sys.databases where name = 'schoolmasterreport_db';

-- 查看agent状态
EXEC master.dbo.xp_servicecontrol N'QUERYSTATE', N'SQLSERVERAGENT'

-- 查看最大序列号
SELECT sys.fn_cdc_get_max_lsn();

-- 查看版本
SELECT @@VERSION;

-- 对当前数据库启用 CDC
USE schoolmasterreport_db
GO
EXECUTE sys.sp_cdc_enable_db;
GO

-- 对当前数据库禁用 CDC
USE schoolmasterreport_db
GO
EXEC sys.sp_cdc_disable_db
GO

-- 禁用表CDC
USE schoolmasterreport_db
GO
EXEC sys.sp_cdc_disable_table
     @source_schema = N'dbo',
     @source_name   = N'demo',
     @capture_instance = N'dbo_demo'
GO

-- 开启表CDC
USE schoolmasterreport_db
GO
EXEC sys.sp_cdc_enable_table
     @source_schema = N'dbo',
     @source_name   = N'demo',
     @role_name     = NULL
GO

  

 

posted @ 2021-09-08 17:45  被遗忘的记忆  阅读(2409)  评论(0编辑  收藏  举报