SQL Server 启用或禁用 CDC 功能

本文介绍如何在SQL Server中启用和管理Change Data Capture (CDC)功能,包括数据库和表级别的CDC启用与禁用操作,以及如何检查CDC状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查看库表是否启动 CDC
– 查看数据库是否启用cdc
SELECT name,is_cdc_enabled FROM sys.databases WHERE is_cdc_enabled = 1;

– 查看当前数据库表是否启用cdc
SELECT name,is_tracked_by_cdc FROM sys.tables WHERE is_tracked_by_cdc = 1;
数据库启用和禁用 CDC
– 对当前数据库启用 CDC
USE MyDB
GO
EXECUTE sys.sp_cdc_enable_db;
GO
– 对当前数据库禁用 CDC
USE MyDB
GO
EXEC sys.sp_cdc_disable_db
GO
数据库表启用和禁用 CDC
– 启用
USE MyDB
GO
EXEC sys.sp_cdc_enable_table
@source_schema = N’dbo’,
@source_name = N’MyTable’,
@role_name = NULL,
@supports_net_changes = 1
GO
– 禁用
USE MyDB
GO
EXEC sys.sp_cdc_disable_table
@source_schema = N’dbo’,
@source_name = N’MyTable’,
@capture_instance = N’dbo_MyTable’
GO
查看表 CDC 功能是否启用
SELECT name ,
is_tracked_by_cdc ,
CASE WHEN is_tracked_by_cdc = 0 THEN ‘CDC功能禁用’
ELSE ‘CDC功能启用’
END 描述
FROM sys.tables;
注意:

开启授权
ALTER AUTHORIZATION ON DATABASE::[MyDB] TO [sa]
需开启 SQL Server Agent 服务
问题及解决办法:
如无法执行启用或禁用表的 CDC,查看主机名的是否一致。

SELECT SERVERPROPERTY(‘ServerName’), srvname, datasource FROM master.dbo.sysservers;
如不一致,执行下面语句:

IF serverproperty(‘servername’)<>@@servername
BEGIN
DECLARE @server SYSNAME
SET @server=@@servername
EXEC sp_dropserver @server=@server
SET @server=cast(serverproperty(‘servername’) AS SYSNAME)
EXEC sp_addserver @server=@server,@local=‘LOCAL’
END
ELSE
PRINT ‘实例名与主机名一致,无需修改!’ ;

作者:lei_charles
链接:https://www.jianshu.com/p/2f2a1df1921a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值