没有合适的资源?快使用搜索试试~ 我知道了~
SQLServer 2008 CDC功能实现数据变更捕获脚本
3 下载量 115 浏览量
2020-09-10
17:38:45
上传
评论
收藏 102KB PDF 举报
温馨提示
试读
7页
主要介绍了使用SQLServer 2008的CDC功能实现数据变更捕获的脚本,大家参考使用
资源推荐
资源详情
资源评论
SQLServer 2008 CDC功能实现数据变更捕获脚本功能实现数据变更捕获脚本
主要介绍了使用SQLServer 2008的CDC功能实现数据变更捕获的脚本,大家参考使用
CDC:Change Data Capture
复制代码 代码如下:
--步骤:本文中以GPOSDB为例
--第一步、对目标库显式启用CDC:
--在当前库使用sys.sp_cdc_enable_db。返回0(成功)或1(失败)。
--注意,无法对系统数据库和分发数据库启用该功能。且执行者需要用sysadmin角色权限。
--该存储过程的作用域是整个目标库。包含元数据、DDL触发器、cdc架构和cdc用户。
--使用以下代码启用:
USE GPOSDB --要启用CDC的数据库
GO
EXECUTE sys.sp_cdc_enable_db;
GO
--在一开始直接执行时,出现了报错信息:
--消息22830,级别16,状态1,过程sp_cdc_enable_db_internal,第193 行
--无法更新元数据来指示已对数据库AdventureWorks 启用了变更数据捕获。
--执行命令'SetCDCTracked(Value = 1)' 时失败。
--返回的错误为15517: '无法作为数据库主体执行,因为主体"dbo"
--不存在、无法模拟这种类型的主体,或您没有所需的权限。'。请使用此操作和错误来确定失败的原因并重新提交请求。
--这里引出了另外一个知识点:错误号 15517 的错误
--这种错误会在很多地方出现,如还原数据库的时候也会有可能出现。
--共同点是:某个/些存储过程使用了具有WITHEXECUTE AS 的选项。
--使其在当前库具有了某个架构,但是当在别的地方执行时,由于没有这个架构,所以就报错,解决方法:
ALTER AUTHORIZATION ON DATABASE::[GPOSDB] TO [sa]
--经过检查,uspUpdateEmployeeHireInfo这个存储过程的确有:WITH EXECUTE AS CALLER
--使用sa的原因是即使sa被禁用,sa还是存在的。所以不会报错。
--现在重新执行:
USE GPOSDB
GO
EXECUTE sys.sp_cdc_enable_db;
GO
--启用成功,然后通过以下语句检查是否成功:
SELECT
is_cdc_enabled,
CASE WHEN is_cdc_enabled=0 THEN 'CDC功能禁用' ELSE 'CDC功能启用' END 描述
FROM sys.databases
WHERE NAME = 'GPOSDB'
--创建成功后,将自动添加CDC用户和CDC架构。
--在用户和架构下面可以看到cdc用户和cdc架构
--创建这两个用户、架构的原因是因为CDC要求独占方式使用这两个架构,所以要单独创建。
--如果存在了非CDC功能创建的CDC用户、架构的话,则需要先删除该cdc命名的架构,才能开启。
--第二步、对目标表启用CDC:
--使用db_owner角色的成员执行sys.sp_cdc_enable_table为每个需要跟踪的表创建捕获实例。
--然后通过sys.tables目录视图中的is_tracked_by_cdc列来判断是否创建成功。
--默认情况下会对表的全部列做捕获。如果只需要对某些列做捕获,
--可以使用@captured_column_list参数指定这些列。
--如果要把更改表放到文件组里的话,最好创建单独的文件组(最起码与源表独立)。
--如果不想控制访问角色,则@role_name必须显式设置为null。
sys.sp_cdc_enable_table
[ @source_schema = ] 'source_schema',
[ @source_name = ] 'source_name' ,
[ @role_name = ] 'role_name'
[,[ @capture_instance = ] 'capture_instance' ]
[,[ @supports_net_changes = ] supports_net_changes ]
[,[ @index_name = ] 'index_name' ]
[,[ @captured_column_list = ] 'captured_column_list' ]
资源评论
weixin_38507121
- 粉丝: 10
- 资源: 929
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功