处理SSIS2008中的变更数据捕获计算机等级考试

文章作者 100test 发表时间 2009:06:17 19:05:20
来源 100Test.Com百考试题网


  编辑特别推荐:

  全国计算机等级考试(等考)指定教材

  全国计算机等级考试学习视频

  全国计算机等级考试网上辅导招生

  全国计算机等级考试时间及科目预告

  百考试题教育全国计算机等级考试在线测试平台

  全国计算机等级考试资料下载

  全国计算机等级考试论坛

  计算机等级考试四级应用题解析汇总

  2009年下半年全国计算机三级考试报名时间从6月1日起已经开始报名。详情点击:2009年下半年全国计算机等级考试各地报名点汇总。2009年下半年全国计算机三级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库

  变更数据捕获(CDC)是SQL Server 2008企业版本中的一个新功能,可以用它来跟踪对表的所有插入、更新和删除操作。一个SQL Server集成服务(SSIS)程序包是配置带有DCD数据的审计表的最佳选择。让我们先讨论一个这样的情形然后介绍相应的解决方法。
  假设我们想把所有对我们客户表的变更存储到customer_audit表中。我们将写一个SSIS程序包来查询CDC数据然后把它复制到customer_audit表中。我们选择按照需求或者按照安排(例如,一个SQL代理任务)运行SSIS程序包。每次我们运行SSIS程序包,我们都想获得上次我们运行程序包后的所作的任何变更。
  客户表
  我们使用下面的客户表:
   create table dbo.customer (
  customer_id int identity primary key not null
  , name nvarchar(50) not null
  , sales_rep nvarchar(50) not null
  , region nvarchar(50) not null
  , credit_limit int not null
  )
  我们使用下面的customer_audit表来存储对客户表的变更:
   create table dbo.customer_audit (
  customer_audit_id int identity primary key not null
  , customer_id int not null
  , name nvarchar(50) not null
  , sales_rep nvarchar(50) not null
  , region nvarchar(50) not null
  , credit_limit int not null
  , effective_date datetime not null
  , __$start_lsn binary(10) not null
  , __$seqval binary(10) not null
  , __$operation int not null
  , __$0update_mask varbinary(128) not null
  )
  customer_audit表包括客户表的每个字段,也包括下面由CDC提供的额外字段:
  effective_date将由cdc.lsn_time_mapping表(稍后介绍)配置。它是更改源表的事务的日期和时间。
  __$start_lsn是来自事务日志的日志序列编号。
  __$seqval提供一个事务内所有更改的一个顺序。
  __$operation具有下面其中一个值:1=0delete,2=insert,3=0update(在值之前),4=0update(在值之后)。
  __$0update_mask是一个位掩码,这里每个更改的字段都设置成1。
  启用CDC
  CDC需要在数据库级别以及你想跟踪变更的表上启用。CDC提供为每张表一个存储过程。下面是为我们的多个数据库和客户表启用CDC的示例脚本:
   use mssqltips
  go
  exec sys.sp_cdc_enable_db
  exec sys.sp_cdc_enable_table
  @source_schema = Ndbo
  ,@source_name = Ncustomer
  ,@role_name = Ncdc_admin
  ,@capture_instance = Ncustomer_all
  ,@supports_net_changes = 1
  ,@index_name = NULL
  ,@captured_column_list = NULL
  ,@filegroup_name = NULL
  上述脚本的要点是:
  存储过程sys.sp_cdc_enable_db为当前的数据库启用CDC。
  存储过程sys.sp_cdc_enable_table为一张表启用CDC。
  为role_name参数创建一个数据库角色.这个角色的成员调用CDC数据。
  capture_instance参数用来确定CDC数据.你的每张表可以有两个参数。
  设置supports_net_changes成1来获得单行中的累积变更。
  如果该表没有主码,那么你必须指定一个唯一索引。
  你可以指定字段列表来跟踪或者NULL来跟踪所有的字段。
  你可以为CDC文件指定一个文件组或者NULL来使用默认的设置。
  要得到更详细的信息,您可以参阅联机帮助,找到sys.sp_cdc_enable_db和sys.sp_cdc_enable_table存储过程。


相关文章


让你的鼠标更灵活计算机等级考试
浅析SQLServer复制的向后兼容性计算机等级考试
informix中简单数据导入导出命令sh程序计算机等级考试
处理SQLServer表的数据插入到错误列中计算机等级考试
处理SSIS2008中的变更数据捕获计算机等级考试
SQLServer2005中进行捕捉错误的两种方法计算机等级考试
使用SQLServer中COALESCE()函数的两种方法计算机等级考试
灵活设置WindowsServer2008应对系统管理谜局计算机等级考试
asp.net上传图片(字节)到mysql数据库计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛