如果利用SQL Server 2008新特性之CDC
2008-04-16 09:53:39 来源:WEB开发网问题:
我们在浏览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:
更多精彩
赞助商链接