欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SqlServer2008实例16捕获和跟踪数据修改的改变之三异步捕获表数据修改

程序员文章站 2022-11-30 18:38:39
SQL Server 2008为异步跟踪所有发生在用户表上的数据修改提供了内建的方法,而不需要编写自定义触发器或查询。变更数据捕获拥有最小性能开销,可以用于其他数据源的持续更新,例如,将OLTP数据库中的数据变更迁移到数据仓库数据库。--创建用来演示的新的数据库IF NOT EXISTS (SELECT name FROM sys.databases WHERE name='TSQLRecipe_CDC_DEMO')BEGIN......

    SQL Server 2008为异步跟踪所有发生在用户表上的数据修改提供了内建的方法,而不需要编写自定义触发器或查询。变更数据捕获拥有最小性能开销,可以用于其他数据源的持续更新,例如,将OLTP数据库中的数据变更迁移到数据仓库数据库。

--创建用来演示的新的数据库
IF NOT EXISTS (SELECT name
               FROM sys.databases
               WHERE name='TSQLRecipe_CDC_DEMO')
BEGIN
	CREATE DATABASE TSQLRecipe_CDC_DEMO
END	

--验证数据库是否启用了变更数据库变更捕获
SELECT is_cdc_enabled
FROM sys.data_spaces
WHERE name='TSQLRecipe_CDC_DEMO'

--开启cdc
USE TSQLRecipe_CDC_DEMO
EXECUTE sys.sp_cdc_enable_db
GO

   启用 变更数据捕获后,可以在数据库中通过使用sys.sp_cdc_enable  table系统存储过程对表进行变更捕获。这个存储过程的参数为:

参数

描述

@source_schema

这个参数定义了对象的架构

@source_name

这个参数指定了表名称

@role_name

这个选项允许你选择拥有访问CDC数据权限的用户定义角色的名称

@capture instance

一个表最多可以指定两个捕获实例。当你计划改变已被CDC捕获的表的架构时,这就派的上用场。你可以在不影响原始CDC的情况下改变榘构(除非它是一个数据类型变更).创建新的捕获实例,在两个表中跟踪变更,然后在你确认新的架构捕获适合你的需求后删除原始捕获实例。如果你不指定名称,默认值为schema_source

@supports_net_changes

当启用时,这个进项允许你只显示在LSN范围内最近的数据变更,这个选项需要表定义一个主键。如果没有定义主键,也可以在@index_name选项中指定一个唯一键

@index_name

这个参数允许在CDC使用的表不存在主键的情况下指定唯一键

@captured_column_llist

如果你对跟踪所有的列变更没兴趣,这个选项允许你减小列表

@filegroup_name 这个选项允许指定CDC数据存储在哪里。对于大型数据集,通过对不同的文件组进行分隔可能会带来更好的管理性及性能
@partition_switch 这个参数用TRUE或FALSE来指定是否允许对CDC表使用ALTER TABLE。。。SWITCH PARTITION(默认为FALSE)
--跟踪下面的新表所有的变更
use TSQLRecipe_CDC_DEMO
go

CREATE TABLE dbo.Equipment
	(
		EquipmentID int NOT NULL PRIMARY KEY IDENTITY(1,1),
		EquipmentDESC varchar(100) NOT NULL,
		LocationID int NOT NULL
	)
go	
--捕获所有发生在行的变更,并且只返回行的净变更.对于其他选项,都将使用默认值
EXEC sys.sp_cdc_enable_table
	@source_schema='dbo',
	@source_name='Equipment',
	@role_name=NULL,
	@capture_instance=NULL,
	@supports_net_changes=1,
	@index_name=NULL,
	@captured_column_list=NULL,
	@filegroup_name=default

SqlServer2008实例16捕获和跟踪数据修改的改变之三异步捕获表数据修改

  也可以使用sys.sp_cdc_heIp_change_data_capture存储过程来验证新配置的捕获实例的设置:

EXEC sys.sp_cdc_help_change_data_capture

SqlServer2008实例16捕获和跟踪数据修改的改变之三异步捕获表数据修改

本文地址:https://blog.csdn.net/ngbshzhn/article/details/107133981