如何在SSIS 2012中使用数据变更捕获
最新项目稍有空隙,开始研究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] GO EXEC sys.sp_cdc_enable_db GO -- add a primary key to the DimCustomer_CDC table so we can enable support for net changes IF 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 = 1 GO /* -- ============================================= -- 创建一个目标表,与源表(Source)有相同的表结构 --注意,在生产环境中,完全可以是不同的实例或服务器,本例为了方便,在同一个数据库实例的同一个数据库中演示 ---Generate By downmoon(邀月),3w@live.cn -- ============================================= */ SELECT TOP 0 * INTO DimCustomer_Destination FROM DimCustomer_CDC --select @@version; select * from DimCustomer_Destination; (编辑:滁州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |