Welcome

首页 / 数据库 / SQLServer / 如何在SSIS 2012中使用数据变更捕获

如何在SSIS 2012中使用数据变更捕获2015-02-14最新项目稍有空隙,开始研究SQL Server 2012和2014的一些BI特性,参照(Matt)的一个示例,我们开始体验SSIS中的CDC(Change Data Capture,变更数据捕获)。

注:如果需要了解关于SQL Server 2008中的CDC,请看这里http://www.cnblogs.com/downmoon/archive/2012/04/10/2439462.html),本文假定读者对CDC的工作方式已有所了解。^_^。

我们分三步完成实例:

1、准备基础数据;

2、设计一个初始包;

3、在2的基础上设计一个增量包。

首先请完成以下准备安装:

(1)Visual studio 2012或Visual Studio 2012 Shell (Isolated) Redistributable Package

http://www.microsoft.com/en-us/download/details.aspx?id=30678

http://www.microsoft.com/en-us/download/details.aspx?id=30670

(2)SQL Server Data Tools - Business Intelligence for Visual Studio 2012

http://www.microsoft.com/zh-cn/download/details.aspx?id=36843

(2)SQL Server 2012企业版或开发版

http://www.microsoft.com/en-us/download/details.aspx?id=29066

(3)示例数据库AdventureWorksDW2012(本文必须,如果自建表则不必)

http://msftdbprodsamples.codeplex.com/releases/view/55330

好了,开始第一步:

/*-- =============================================-- 创建测试数据库及数据表,借助AdventureWorksDW2012示例数据库---Generate By downmoon(邀月),3w@live.cn-- =============================================*/--Create database CDCTest--GO--USE [CDCTest]--GO--SELECT * INTO DimCustomer_CDC--FROM [AdventureWorksDW2012].[dbo].[DimCustomer]--WHERE CustomerKey < 11500;--select * from DimCustomer_CDC;
/*-- =============================================-- 启用数据库级别CDC,只对企业版和开发版有效---Generate By downmoon(邀月),3w@live.cn-- =============================================*/USE [CDCTest]GOEXEC sys.sp_cdc_enable_dbGO-- add a primary key to the DimCustomer_CDC table so we can enable support for net changesIF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N"[dbo].[DimCustomer_CDC]") AND name = N"PK_DimCustomer_CDC")ALTER TABLE [dbo].[DimCustomer_CDC] ADD CONSTRAINT[PK_DimCustomer_CDC] PRIMARY KEY CLUSTERED ([CustomerKey] ASC)GO/*-- =============================================-- 启用表级别CDC---Generate By downmoon(邀月),3w@live.cn-- =============================================*/EXEC sys.sp_cdc_enable_table @source_schema = N"dbo",@source_name = N"DimCustomer_CDC",@role_name = N"cdc_admin",@supports_net_changes = 1GO
/*-- =============================================-- 创建一个目标表,与源表(Source)有相同的表结构--注意,在生产环境中,完全可以是不同的实例或服务器,本例为了方便,在同一个数据库实例的同一个数据库中演示---Generate By downmoon(邀月),3w@live.cn-- =============================================*/SELECT TOP 0 * INTO DimCustomer_DestinationFROM DimCustomer_CDC--select @@version;select * from DimCustomer_Destination;
邀月工作室邀月工作室