问题: 我们在浏览sql server 2008的新特性的时候,发现有一个很有趣的特性叫change dada capture。您能不能向我们详细介绍一下怎么利用这个新特性? 专家解答: change data capture(cdc)是sql server 2008的一个新特性,它可以记录sql server表的插入、更新
问题:
我们在浏览sql server 2008的新特性的时候,发现有一个很有趣的特性叫change dada capture。您能不能向我们详细介绍一下怎么利用这个新特性?
专家解答:
change data capture(cdc)是sql server 2008的一个新特性,它可以记录sql server表的插入、更新和删除等表修改活动。利用该新特性的一个很好的例子就是对某个数据仓库进行定期更新。我们以前需要通过使用数据装载程序(etl)来更新数据仓库中所有在源系统中更改过的数据。在cdc这个新功能出现之前,我们可能只会选择查询源系统表里最新更新的datetime列来找出那些行曾经被改动过。虽然这个方法既简单又有效,但是它不能查找出那些行被物理删除了。另外,我们也无法用这个办法来确定被改动过的行改动的地方,我们只能读取被改动过的行的当前状态。而利用cdc,我们不仅可以轻松完成上述任务,还可以通过它来进行更复杂的对于数据修改历史的查询。
这里我们简单地介绍一下cdc,并通过编码来演示如何来完成以下任务:
创建和配置cdc
利用cdc通过t-sql查询来抽取插入行、被改动过的行或者被删除的行。
在开始讲述t-sql代码例子之前,我们先讨论一下cdc有什么的高级功能。在执行完创建和配置步骤之后(我们会在下文讲述),cdc会开始扫描数据库事务处理日志,查找你所指定的某些表被改动的情况,并把这些改动插入到改动表里。cdc创建和配置过程还会创建表赋值函数,这些表赋值函数可用于查询改动。你将利用表赋值函数,而不需要直接查询改动表。现在我们来看一下具体例子。
下面的编码例子只在2008年二月的ctp里进行过测试,一些函数名称和存储过程的名称现在已经有所改动。
创建和配置
cdc这项新功能可以应用在整个数据库水平上,在默认设置里这项功能是处于禁用状态的。要启用cdc,你必须是sysadmin固定服务器角色的成员。你可以在任何用户数据库里启用cdc,但是你不能在系统数据库里启用该项功能。在你所选的数据库中执行以下t-sql脚本来启用cdc:
1 2 3 4 5 6 下一页