SQL Server 2008新功能 捕获数据变化(3)

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

内容摘要:捕获数据变化功能可以方便地监控到表的变化。本文的第一、二部分介绍了怎样在数据库及表上开启捕获数据变化功能。下面将介绍的是,如果表的结构发生变化,捕获数据变化功能将有什么样的表现。

SQL Server 2008新功能 捕获数据变化(3)

  图Fig 1.0

  use[CDCDB]
  go
  Selectcase__$operationwhen1then'Deleting'
  when2then'Inserting'
  when3then'ValuebeforeUpdate'
  when4then'ValueafterUpdate'
  when5then'Merge'end,__$update_mask,ID,Name
  fromcdc.dbo_Employee_CT
  go

  执行结果

  ,__$update_mask,ID,Name
  Inserting,0x03,1,DancingDoll
  Inserting,0x03,2,RainbowDance
  Inserting,0x03,3,WaterDance
  Inserting,0x03,4,MickeyMouse
  Inserting,0x03,5,Ratyear
  ValuebeforeUpdate,0x02,5,Ratyear
  ValueafterUpdate,0x02,5,test
  Deleting,0x03,3,WaterDance
  Deleting,0x03,4,MickeyMouse
  homesql2008(HOMEMAK):(9row(s)affected)

SQL Server 2008新功能 捕获数据变化(3)

  图Fig 1.1

  从以上的结果中,我们可以看出只有ID和Name这2列被监控到了,开启数据捕获功能之后增加的所有列都内有被监控到。

  第九步

  现在我们对所有列进行数据捕获。先关闭当前的数据捕获功能,再打开数据捕获功能就可以了。使用下面的语句关闭当前功能:

  use[CDCDB]
  go
  EXECsys.sp_cdc_disable_table_change_data_capture
  @source_schema='dbo',
  @source_name='Employee',
  @capture_instance='dbo_Employee'
  Go

  第十步

  使用如下T-SQL语句在表“Employee”上开启捕获数据变化功能。这次我们想查看到哪些列被监控了。

  use[CDCDB]
  go
  EXECsys.sp_cdc_enable_table_change_data_capture
  @source_schema='dbo',
  @source_name='Employee',
  @role_name='cdc_Employee',
  @captured_column_list=N'ID,Name,Salary,Bonus'
  GO

  查询捕获数据变化模式下Empolyee表的变化,如下:

  use[CDCDB]
  go
  select*fromcdc.dbo_Employee_CT
  go

  执行结果显示,Empolyee表的所有列都被监控了。(参考图 Fig 1.2)

SQL Server 2008新功能 捕获数据变化(3)

  图 Fig 1.2

  结论

  为了更好的监控表结构的变化,我们可以在适当的时候关闭或开启数据库上的捕获数据变化功能。

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

正在加载评论...