SQL Server 多表数据增量获取和发布 2.2
数据库环境:
1、SQLServer 2008R2
2、SQLServer 代理打开
一、新建一个数据库
创建数据库 Incremental_DB
二、创建俩张测试表
--创建用户表 CREATE TABLE [dbo].[Person]( [Id] [INT] IDENTITY(1,1) NOT NULL, [Name] [NVARCHAR](120) NULL, [Age] [INT] NULL, CONSTRAINT [PK_Demo] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] --创建部门表 CREATE TABLE [dbo].[Department]( [Id] [INT] IDENTITY(1,1) NOT NULL, [Name] [NVARCHAR](50) NULL, CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
三、实现数据变更捕获
一、对目标库显式启用CDC
USE Incremental_DB GO EXECUTE sys.sp_cdc_enable_db; GO
查看是否启用CDC
SELECT is_cdc_enabled,CASE WHE is_cdc_enabled=0 THEN 'CDC功能禁用'ELSE 'CDC功能启用'END [描述] FROM sys.databases WHERE [name]='Incremental_DB'
创建成功后,会在测试库自动添加CDC用户和架构
二、对目标库数据表显式启用CDC
USE Incremental_DB EXECUTE sys.sp_cdc_enable_table @source_schema = N'dbo'--架构名称 , @source_name = N'Department'--表名称 , @role_name = 'cdc_Admin'--会自动生成自定义 'cdc_Admin' 角色 如果不想控制访问角色,则@role_name必须显式设置为null , @capture_instance=NULL EXECUTE sys.sp_cdc_enable_table @source_schema = N'dbo'--架构名称 , @source_name = N'Person'--表名称 , @role_name = 'cdc_Admin'--会自动生成自定义 'cdc_Admin' 角色 如果不想控制访问角色,则@role_name必须显式设置为null , @capture_instance=NULL
语句执行成功后在系统表中生成俩张变化表
数据库可编程性中增加俩个函数
同时SQLServer 代理中新增俩个作业
- capture(捕获作业)
-
clean(清理作业)
如果出现如下错误,请参考上一篇文章CDC注意事项第三点
验证数据表是否启用CDC
USE Incremental_DB --查看是否已启用: SELECT name , is_tracked_by_cdc , CASE WHEN is_tracked_by_cdc = 0 THEN 'CDC功能禁用' ELSE 'CDC功能启用' END 描述 FROM sys.tables WHERE OBJECT_ID IN(OBJECT_ID('Person'),OBJECT_ID('Department'))
四、禁用数据库或数据表CDC功能
禁用数据表CDC
--禁用人员表CDC功能 EXECUTE sys.sp_cdc_disable_table @source_schema = N'dbo', @source_name = N'Person', @capture_instance = 'dbo_Person'
禁用后系统表中原来的dbo_Person_CT表被删除,函数删除等
禁用数据库CDC
EXEC sys.sp_cdc_disable_db
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
5G知识结构图
这次福利的内容,是5G知识结构图。 这张图采用思维导图的方式进行绘制,包括了5G相关的概念,知识框架、重要的知识点。 本图主要以知识结构为主线,条理清晰,简单明了,对从宏观上观察5G,应该会有很大的帮助。 凡是学习一样东西,首先要搭建相关的知识架构,有一个系统性的了解,再去深入研究,效率是最高的。 部分截图: 原文发布时间为:2018-08-25本文作者:小枣君本文来自云栖社区合作伙伴“ 鲜枣课堂”,了解相关信息可以关注“ 鲜枣课堂”。
- 下一篇
没有宫廷内斗,数据库界的延禧攻略
各位老铁们,你们有没有想老张,最近老张的才华被工作的繁忙所限制了,所以一直没时间更博,今儿个时隔数日我们终于再次见面啦(很开心)!最近有部特别火的宫廷戏,不知道大家有没有看,剧名叫做《延禧攻略》,讲述得是一个宫女,一路过关斩将,最后成为皇上最宠爱的令贵妃的故事。 加上我本人巨爱这类题材,所以痴迷得不得了。(好像暴露了自己没有更博的真正原因哈哈)。宫廷类的剧,都是后宫嫔妃之间的尔虞吾诈,勾心斗角,有你没我,有我没你的残酷事实。胜者为王,败者为寇这种思想好像从古代就一直延续到今日。非要分出个胜负,分出个谁好,谁坏才罢休。 在数据库领域也会有此类问题,老张我混迹开源数据库圈多年。MySQL 数据库占领着开源数据库的头把交椅,MongoDB 占领着 NoSQL 数据库的第一位。我们来看下数据库的整体排名情况; 两者都是第一,所有总会拿来比较。也会经常被人问及到诸如此类的问题MongoDB4.0 已经问世了,而且支持事务了,是不是将来可以取代 MySQL了。MySQL 和 MongoDB 哪个数据库好用啊。今天老张想通过这篇文章,带着大家全方位解读 MySQL 与 MongoDB 的区别。让有困...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7设置SWAP分区,小内存服务器的救世主