Sql Server开启CDC

Sql Server开启CDC

特殊说明:sql server开启cdc表必须存在主键

  • 开启数据库CDC
EXEC sys.sp_cdc_enable_db
  • 查询CDC状态
    dbname为数据库名称,返回结果1表示开启
select is_cdc_enabled from sys.databases where name='dbname'
  • 开启代理服务
    开启SQL server agent服务(逐条执行)
sp_configure 'show advanced options', 1;
RECONFIGURE;
sp_configure 'Agent XPs', 1;
RECONFIGURE;
  • 容器化部署sqlserver采用docker开启服务代理
docker exec -u root -it xxx /bin/bash
/opt/mssql/bin/mssql-conf set sqlagent.enabled true
exit;
docker restart xxx
  • 查询db的物理文件,不清楚物理存储路径的可以先查询,特别说明,当删除了物理文件,这个查询仍会有记录直到下一次DB进行备份才会更新
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('dbname');
  • 添加文件组并向文件组添加文件
ALTER DATABASE dbname ADD FILEGROUP CDCGroup;
ALTER DATABASE dbname  ADD FILE (
	NAME= 'HospitalInterfaceDb_CDC',
	FILENAME = 'file-path'
) TO FILEGROUP CDCGroup;
  • 开启表CDC
EXEC sys. sp_cdc_enable table
    @source_schema = 'alltype1',
    @source_name = 'integration_c',
    @capture_instance = NULL,--可为NULL,
    @supports_net_changes = 1,--示网络更(即描入、更新删除)
    @role_name = NULL;--访问CDC的色,如果为NULL则没有特定的色要求
    @filegroup_name = 'CDCGroup' -- filegroup_name
  • 查询是否开启CDC
SELECT name, is_tracked_by_cdc FROM sys.tables WHERE name='table';
select name, is_tracked_by_cdc from sys.tables where object_id = OBJECT_ID('schema.table');
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server中启用Change Data Capture (CDC)(更改数据捕获)功能会对数据库产生一定的影响。 首先,启用CDC会在数据库中创建一些系统表和函数,用于存储和管理更改数据的元数据信息。这些系统表和函数占用一定的存储空间和系统资源,并且会增加数据库的复杂性。因此,在启用CDC之前,需要评估数据库的大小和性能,以确保数据库能够承受这些额外的开销。 其次,启用CDC会引入一些额外的系统作业,用于捕获和管理更改数据。这些作业会定期运行,对系统的性能产生一定的影响。如果系统的负载已经很高或者对实时性要求较高,启用CDC可能会导致系统性能下降。因此,需要根据实际情况来决定是否启用CDC以及如何配置捕获和清理作业的调度。 此外,启用CDC还会对数据库的事务日志产生一定的影响。CDC通过读取事务日志来捕获更改数据,如果数据库的事务日志非常繁忙,则可能影响到CDC的性能甚至导致CDC的延迟。在启用CDC之前,需要评估数据库的事务负载,以确保事务日志能够满足CDC的要求。 最后,启用CDC还需要对数据库中的相关对象进行一些设置和配置。这些设置和配置可能会对现有的应用程序和业务逻辑产生一定的影响,因此在启用CDC之前,需要进行充分的测试和验证。 总之,启用CDC会对SQL Server数据库产生一定的影响,包括存储空间、系统资源、性能和配置等方面。在决定是否启用CDC之前,需要综合考虑数据库的大小、性能、负载以及应用程序的需求,并进行充分的评估和测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值