现在先来对HumanResources.Department 表修改一下,把name的长度加长:
复制代码</p>
<p align="left">ALTER TABLEHumanResources.DepartmentALTER COLUMN Name NVARCHAR(120);</p>
<p>GO</p>
<p>
然后查询ddl记录表:
复制代码</p>
<p align="left">SELECT *</p>
<p>FROM cdc.ddl_history</p>
<p>
可以看到:

由于在截图之前已经试了几次,所以里面有3条数据,之所以试了几次,就是因为上面所说的,忘了开SQL代理,所以查不出数据,所以切记要开启SQL代理。
6、使用CDC的函数来获取更改:
A、使用cdc.fn_cdc_get_all_changes_HumanResources_Department 函数报告捕获实例HumanResources_Department 的当前所有可用更改:
复制代码</p>
<p align="left">DECLARE @from_lsn binary(10),@to_lsn binary(10)</p>
<p align="left">SET @from_lsn=</p>
<p align="left"> sys.fn_cdc_get_min_lsn('HumanResources_Department')</p>
<p align="left">SET @to_lsn = sys.fn_cdc_get_max_lsn()</p>
<p align="left">SELECT *FROM cdc.fn_cdc_get_all_changes_HumanResources_Department</p>
<p align="left"> (@from_lsn,@to_lsn, N'all update old');</p>
<p align="left">GO</p>
<p>

B、获取某个时间段的更改信息:
先根据日志序列号(logsequence number ,LSN)来获取跟踪变更数据:
Sys.fn_cdc_map_time_to_lsn获取变更范围内的最大、最小LSN值。可以使用:
Smallest greater than;smallest greater than orequal;largest less than;largest less than or equal.
如查询某个时间段插入的数据:
--插入数据
复制代码</p>
<p align="left">INSERT INTOHumanResources.Department(name,GroupName,ModifiedDate)</p>
<p align="left">VALUES('test','abc',GETDATE())</p>
<p align="left">INSERT INTOHumanResources.Department(name,GroupName,ModifiedDate)</p>
<p align="left">VALUES('test1','abc1',GETDATE())</p>
<p align="left">go</p>
<p align="left">
--检查数据
复制代码</p>
<p align="left">DECLARE @bglsn VARBINARY(10)=sys.fn_cdc_map_time_to_lsn('smallest greater than or equal','2012-10-12 12:00:00.997')</p>
<p align="left">DECLARE @edlsn VARBINARY(10)=sys.fn_cdc_map_time_to_lsn('largest less than or equal',GETDATE())</p>
<p align="left">SELECT DepartmentID,GroupName,Name</p>
<p align="left">FROM cdc.HumanResources_Department_CT</p>
<p>WHERE [__$operation]=2AND [__$start_lsn]BETWEEN @bglsn AND @edlsn</p>
<p align="left">










