1. USE t;
  2. GO
  3. --开启某个数据库的CDC功能
  4. exec sys.sp_cdc_enable_db
  5. GO
  6.  
  7. --is_cdc_enabled栏位为1代表开启CDC功能了
  8. SELECT is_cdc_enabled,CASE WHEN is_cdc_enabled=0
  9. THEN 'CDC功能禁用' ELSE 'CDC功能启用'END 描述
  10. FROM sys.databases
  11. WHERE NAME = 't'
  12.  
  13. --开启单张表的CDC功能
  14. EXEC sys.sp_cdc_enable_table @source_schema='dbo',
  15. @source_name = 'so',@role_name = NULL
  16.  
  17. --关闭单张表的CDC功能
  18. EXEC sys.sp_cdc_disable_table @source_schema='dbo',
  19. @source_name = 'so',@capture_instance = 'dbo_so'
  20.  
  21. -- __$operation”为“1”代表删除,“2”代表插入,“3”执行更新操作前的值,“4”执行更新操作后的值。
  22. SELECT * FROM [cdc].[dbo_so_CT]
  23.  
  24. --(DDL) 更改历史记录
  25. SELECT * FROM [cdc].[ddl_history]

 

  1. 注意事项
  2.  
  3. 1  SQL Server的版本必须是2008或以上;
  4.  
  5. 2  不能同时使用内存优化表(SQL Server2014或以上版本才有的功能)。否则会出现以下错误:
  6.  
  7. 3.  @@SERVERNAMEserverproperty('servername')两者(本地服务器名和服务器实例的属性必须一致)必须一致。下面脚本可将两者调整成一致。如果执行后两者仍不一致,需要重启SQL Server服务。
  8.  
  9. if serverproperty('servername') <> @@servername
  10. begin
  11. declare @server sysname
  12. set @server = @@servername
  13. exec sp_dropserver@server =@server
  14. set @server = cast(serverproperty('servername') as sysname)
  15. exec sp_addserver@server = @server , @local = 'LOCAL'
  16. PRINT 'ok'
  17. end
  18.  
  19. select @@SERVERNAME,serverproperty('servername')
  20. 4.      必须开启SQL Sever代理服务。CDC功能必须通过作业来实现。
  21.  
  22. 5.      开启CDC功能的表,无法使用 TRUNCATE TABLE 。可以先禁用,执行完truncate再启用cdc
  23.  
  24. 6.      如果表结构发生变化,则捕获实例表中:新增列无法捕获到、删除列保持NULL、修改列类型会发生强制转换。为保险起见,应禁用捕获实例,然后再启用。
  25.  
  26. 7.      在查询CDC相关表时,建议加上With(NOLOCK),否则易产生阻塞或死锁。
  27.  
  28. 8.      一个表最多只能有两个捕获实例。
  29.  
  30. 如果更新表时并未实际修改值,则不会有产生捕获(对应的捕获实例表不会增加相应的行)。

  

 

使用SQL Server 的CDC功能实现数据变更捕获的更多相关文章

  1. 使用SQLServer 2008的CDC功能实现数据变更捕获

    原文:使用SQLServer 2008的CDC功能实现数据变更捕获 最近由于工作需要,研究了一下2008 CDC功能,觉得还不错,下面整理了一下研究过程,虽然比较粗略,但是基本上能用了,如果有补充请大 ...

  2. (整理)SQL Server 2008 CDC 功能使用

    最近某项目突然要增加数据的获取,但是不能改程序.也没有同步的只读库,只好使用CDC来进行尝试. CDC的启用和停止全部用SQL实现,在这里给出主要的SQL步骤: /****** Script for ...

  3. SQL Server 2008 CDC增量变更捕获详解

    1 背景: 随着公司业务的成长,数据量也随之的不断增长.随之而来的问题是在做ETL的时候,时间花费也越来越长.为了节省时间开销,我们只想要更新最新的数据,不想要把公司历年所有的数据都进行处理.这种情况 ...

  4. SQL Server ---(CDC)监控表数据(转译)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现过程(Realization) 补充说明(Addon) 参考文献(References) ...

  5. SQL Server 2008中新增的 1.变更数据捕获(CDC) 和 2.更改跟踪

    概述 1.变更数据捕获(CDC)        每一次的数据操作都会记录下来 2.更改跟踪       只会记录最新一条记录   以上两种的区别:         http://blog.csdn.n ...

  6. SQL Server 后续去除功能汇总

    原文:SQL Server 后续去除功能汇总 功能更新去除汇总 字段类型 在 Microsoft SQL Server 的未来版本中将删除 ntext.text 和 image 数据类型. 请避免在新 ...

  7. 使用Sql Server Management Studio 2008将数据导出到Sql文件中

      最近需要将一个Sql Server 2005数据库中的数据导出,为了方便,就希望能导出成Sql文件,里面包含的数据是由Insert 语句组成的. 在Sql Server Management St ...

  8. SQL Server 2014新功能PPT

        本篇文章是我在公司内部分享SQL Server 2014新功能的PPT,在本PPT中我详细描述了SQL Server除了BI方面的新功能,以及提供了大量的测试.希望对大家有帮助.     请点 ...

  9. 清空SQL Server数据库中所有表数据的方法(转)

    清空SQL Server数据库中所有表数据的方法 其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入 ...

随机推荐

  1. Unity3D中Layers和LayerMask解析

    Unity中是用int32来表示32个Layer层.int32表示二进制一共有32位(0—31).在Unity中可编辑的Layer如下图所示:   在Unity中每个GameObject都有Layer ...

  2. [Artoolkit] Framework Analysis of nftSimple

    What is nftSimple? Loads NFT dataset names from a configuration file. The example uses the “Pinball. ...

  3. ios开发之--NSURL的用法

    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/search?id=1"]; NSLog(@"schem ...

  4. 【Docker】容器操作(转)

    来自:https://www.cnblogs.com/zydev/p/5803461.html 列出主机上的容器 列出正在运行的容器:   docker ps 列出所有容器:  docker ps - ...

  5. rtmp简要流程

  6. 关于Kafka Fetch Session的讨论

    Kafka在1.1.0版本引入了fetch session的概念,旨在降低“无效”FETCH请求对集群带宽资源的占用.故事的背景是这样的: 众所周知,Kafka的broker和consumer都会定期 ...

  7. 【netcore基础】.NET Core使用EPPlus实现MVC API里的Excel导出功能 配置中文表头

    EPPlus 用来操作excel非常方便,不用依赖微软的office包,所以推荐使用. 下面是具体步骤和代码 首先用nuget安装 EPPlus.Core 我装的版本是 1.5.4 然后就可以用 Ex ...

  8. 【netcore入坑记】 .Net core UseRowNumberForPaging 分页报错 SQL Server 2008 R2 EntityFrameworkCore

    异常环境: netcore版本:.Net Core 2.1 efcore版本:Microsoft.EntityFrameworkCore.SqlServer 2.1.1 sql sqlserver 版 ...

  9. Don't forget to Cherish

    Watch the video Cherish time, Cherish memories, Cherish tears, Cherish smiles, Cherish friends, Cher ...

  10. springboot集成rabbitmq的一些坑

    一.默认管理页面地址是 http://127.0.0.1:15672 但是spring配置连接里面要把端口改成5672,如果不配置的话默认就是端口5672 spring.rabbitmq.host=1 ...