ITPub博客

首页 > 数据库 > SQL Server > SqlServer CDC的使用(OGG)

SqlServer CDC的使用(OGG)

原创 SQL Server 作者:lhrbest 时间:2020-11-25 10:33:12 0 删除 编辑

SqlServer CDC的使用(OGG)


启用数据库:在当前数据库下执行命令

USE CDRDB;
GO
EXEC sys.sp_cdc_enable_db

 

这个过程会在当前数据库下创建6个系统表 
cdc.captured_columns 
cdc.change_tables 
cdc.ddl_history 
cdc.index_columns 
cdc.lsn_time_mapping 
dbo.systranschemas


2查询哪些数据库启用了CDC功能

select * from sys.databases where is_cdc_enabled = 1

 

启用表,例如表名为”dbo.t1”

EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 't1', @role_name = null;

 

注:为第一个表启用CDC后,SQLServer生成两个Agent作业 
cdc.dbname_capture 
cdc.dbname_cleanup 
查看表是否启用了CDC

select name, is_tracked_by_cdc from sys.tables where object_id = OBJECT_ID('dbo.t1')

 

禁用表(“dbo.t1”)

EXEC sys.sp_cdc_disable_table @source_schema = 'dbo', @source_name = 't1', @capture_instance = 'all';

禁用数据库CDC 

EXEC sys.sp_cdc_disable_db;

一些异常情况的处理 

(1) 数据库从2005恢复到2008,打开表级别的附加日志报错
未针对数据库 'AdventureWorks2014' 启用变更数据捕获。 请确保已设置正确的数据库上下文,然后重试该操作。若要报告数据库已启用变更数据捕获这一情况, 请查询 sys.databases 目录视图中的 is_cdc_enabled 列.

解决办法:

ALTER AUTHORIZATION ON DATABASE::[数据库名] TO [sa]

 


CDC表状态的含义:
__$operation=2的情况,表示新增
__$operation=3或者4,表示更新,3表示旧值,4表示新值
__$operation=1的情况,表示删除

 

根据发布批量生成表
 
SELECT 'EXEC sys.sp_cdc_enable_table @source_schema = N'''+b.source_owner+''','
 +'@source_name='''+b.source_object+''','+'@role_name=''cdc'',@supports_net_changes = 1'FROM dbo.MSpublications a,dbo.MSarticles bWHERE a.publication_id=b.publication_id AND a.publisher_db=b.publisher_dband a.publication ='his_repl'

 

 

根据系统表批量生成表
select 'EXEC sys.sp_cdc_enable_table @source_schema = ''dbo'', @source_name = '''+name+''', @role_name = null;' from sysobjects where xtype='U' and category ='0'

systranschemas (Transact-SQL)


The  systranschemas table is used to track schema changes in articles published in transactional and snapshot publications. This table is stored in both publication and subscription databases.

SYSTRANSCHEMAS (TRANSACT-SQL)
Column name Data type Description
tabid int Identifies the table article on which the schema change occurred.
startlsn binary LSN value at the start of the schema change.
endlsn binary LSN value at the end of the schema change.
typeid int Type of schema change.





About Me

........................................................................................................................

● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除

● 本文在个人微 信公众号( DB宝)上有同步更新

● QQ群号: 230161599 、618766405,微信群私聊

● 个人QQ号(646634621),微 信号(db_bao),注明添加缘由

● 于 2020年11月完成

● 最新修改时间:2020年11月

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

● 小麦苗出版的数据库类丛书: http://blog.itpub.net/26736162/viewspace-2142121/

小麦苗OCP、OCM、高可用、MySQL、DBA学习班http://blog.itpub.net/26736162/viewspace-2148098/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

........................................................................................................................

请扫描下面的二维码来关注小麦苗的微 信公众号( DB宝)及QQ群(230161599、618766405)、添加小麦苗微 信(db_bao), 学习最实用的数据库技术。

........................................................................................................................

 

 



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2736680/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
【QQ:646634621】【微信:db_bao】【微信公众号:DB宝】【11g、12c OCM】【QQ群:230161599、618766405】【《数据库笔试面试宝典》作者】【OCP、OCM、高可用(RAC+DG+OGG)、MySQL培训班已开讲,只讲实用内容】

注册时间:2012-09-23

  • 博文量
    1586
  • 访问量
    9170523