Welcome

首页 / 数据库 / SQLServer / SSIS:通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性

SSIS:通过设置 CheckPoints 检查点来增强 SSIS Package 流程的重用性2014-03-23 cnblogs BIWORK通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整 个流程执行下来的时间可能比较长。假设在 ETL Package 中包含5个Task,前3个Task执行超过1个小时 ,到了第4个Task的时候发生失败。如果下次执行的时候重新从第1个任务开始执行,那么又要花费1个小 时等待 1-3 任务执行,无疑在效率上讲是非常低的。特别是在数据仓库的应用上,往往从数据源到 Staging的过程中有千万级甚至亿级的数据要加载,加载完毕之后再进入到维度和事实表。如果在进入维 度和事实表的过程中发生失败,就意味着下次需要重新加载数据到Staging表。而通过检查点CheckPoint 的设置可以解决这个问题,通过合理的设置可以跳过上一次已经成功执行过一些步骤而直接从失败的地 方重新开始执行,这样大大的提高了包的执行效率。

下面这个 ETL 示例简单的模拟了从一个数据源抽取数据然后输出到一个数据表和一个平面文件的过 程,之后再看 CheckPoint 的使用。

USE BIWORK_SSISGOIF OBJECT_ID("CK_Address") IS NOT NULLDROP TABLE CK_Address GOIF OBJECT_ID("CK_AddressAudit") IS NOT NULLDROP TABLE CK_AddressAuditGOCREATE TABLE CK_Address(AddressID INT,AddressLine1 NVARCHAR(60),AddressLine2 NVARCHAR(60),City NVARCHAR(30))CREATE TABLE CK_AddressAudit(ID INT PRIMARY KEY IDENTITY(1,1),CityName NVARCHAR(60),Counts INT)
ETL 过程 -

EST_TruncateAddress - TRUNCATE TABLE dbo.CK_Address  TRUNCATE TABLE dbo.CK_AddressAudit

DFT_LoadAddress - 从 AdventureWorks2012.People.Address 中抽取数据到 dbo.CK_Address 中

DFT_SaveAddressAudit - 对 CK_Address 表中的数据做出一些统计然后写入到 dbo.CK_AddressAudit 中

DFT_OutputAddressAudit - 将 dbo.CK_AddressAudit 中的数据输出到一个文本文件中