SQL 2008的变更数据捕获——跟踪可变部分(2)
作者:代翀 来源:IT专家网 时间:2009-03-20 11:47:00
在sys.all_objects表中还有四个新的看起来很奇怪的“SQL inline table-valued function”登录:
· fn_cdc_get_all_changes_◦...◦
· fn_cdc_get_all_changes_...
· fn_cdc_get_net_changes_◦...◦
· fn_cdc_get_net_changes_...
(我使用了非比例字体,用“◦”来标记空格,使得很清楚地看到在这些名称中有嵌入的空格。)
下面是会返回这些函数的查询:
SELECT [name] FROM sys.all_objects WHERE [name] LIKE '%...%'
还有更多的新存储过程
· sp_batchinsert_lsn_time_mapping
· sp_ins_dummy_lsn_time_mapping
· sp_ins_instance_enabling_lsn_time_mapping
· sp_ins_lsn_time_mapping
现在还没有新的作业或角色。
创建新的Schema和用户表
CREATE SCHEMA MySchema
CREATE TABLE MySchema.Person (
PersonID int IDENTITY PRIMARY KEY,
FirstName varchar(32) NOT NULL,
LastName varchar(32) NOT NULL,
UpdateCt int NOT NULL DEFAULT 0
)
上面的代码创建了一个新的用户表,但是这个表还没有激活CDC。
这个步骤不影响我们所跟踪的函数/存储过程/角色列表。
为新的用户表激活CDC
EXEC sys.sp_cdc_enable_table
@source_schema = N'MySchema',
@source_name = N'Person',
@role_name = N'ChangeDataAccessRole',
@supports_net_changes = 1
这会为新的用户表激活CDC。刷新上面所列的文件夹。我们现在有了
· 一个新的系统表(cdc.MySchema_Person_CT)
· 两个新的作业(cdc.TestCdc_capture和cdc.TestCdc_cleanup)
· 一个新的数据库角色(ChangeDataAccessRole)