如果利用SQL Server 2008新特性之CDC

http://tech.ddvip.com   2008年04月16日    社区交流

内容摘要:Change Data Capture(CDC)是SQL Server 2008的一个新特性,它可以记录SQL Server表的插入、更新和删除等表修改活动。利用该新特性的一个很好的例子就是对某个数据仓库进行定期更新。

  你可以通过执行以下T-SQL脚本来禁用某个表的CDC:

以下是引用片段:
  execsys.sp_cdc_disable_table
  @source_schema='dbo',
  @source_name='customer',
  @capture_instance='dbo_customer'--or'all'

  你可以通过执行以下T-SQL脚本来禁用整个数据库的CDC:

以下是引用片段:
  declare@rcint
  exec@rc=sys.sp_cdc_disable_db
  select@rc
  --showdatabasesandtheirCDCsetting
  selectname,is_cdc_enabledfromsys.databases

  禁用表或数据库水平的CDC将会删除在其启用时创建的表、工作、存储过程和函数等对象。

  现在我们已经为一个数据库和表启用了CDC,我们现在来继续看演示例子:

  CDC演示

  我们会通过以下步骤来演示CDC的功能:

  对customer表进行一些插入、更改和删除的活动。

  显示用来查询改动的T-SQL代码实例

  执行以下T-SQL脚本来对customer表进行插入、更改和删除:

以下是引用片段:
  insertcustomervalues('abccompany','md')
  insertcustomervalues('xyzcompany','de')
  insertcustomervalues('xoxcompany','va')
  updatecustomersetstate='pa'whereid=1
  deletefromcustomerwhereid=3

  下面的查询会显示上述改动的记录:

以下是引用片段:
  declare@begin_lsnbinary(10),@end_lsnbinary(10)
  --getthefirstLSNforcustomerchanges
  select@begin_lsn=sys.fn_cdc_get_min_lsn('dbo_customer')
  --getthelastLSNforcustomerchanges
  select@end_lsn=sys.fn_cdc_get_max_lsn()
  --getnetchanges;groupchangesintherangebythepk
  select*fromcdc.fn_cdc_get_net_changes_dbo_customer(
  @begin_lsn,@end_lsn,'all');
  --getindividualchangesintherange
  select*fromcdc.fn_cdc_get_all_changes_dbo_customer(
  @begin_lsn,@end_lsn,'all');

来源:IT专家网    作者:Echo    责编:豆豆技术应用

正在加载评论...