SSIS 组件属性整理

整理SSIS 组件的属性解释及其用法

一,ExecValueVariable属性

有些Task组件执行完成之后,会产生输出结果,称作Execution Value,例如,Execute SQL Task在执行完成之后,会返回受影响的数据行数。Task组件的Execution Value可以通过属性ExecValueVariable来获取。

属性ExecValueVariable指定存储Execution Value的变量名,属性的默认值是none,表示task的输出结果不会被存储到变量;创建一个变量,并将变量名赋值给该属性,表示在Task执行完成之后,SSIS将Task的输出结果赋值给该变量。

示例,在Execute SQL Task中执行更新语句,获取受影响的数据行总数

update dbo.dt set c1=5

1,创建一个变量VarInt,用于保存更新的数据行数量

2,设置Execute SQL Task的属性ExecValueVariable,选择用户创建的变量User:VarInt 

3,执行Package,在Watch调试窗口中查看变量的值

4,附上控制流的Task组件的执行值描述

 

二,ValidateExternalMetadata属性

ValidateExternalMetadata属性,指定该组件是否在设计时(design-time)验证外部输入数据源的元数据,默认情况下,该属性的值是True,因此,在设计Package时,打开Package,添加组件或者运行包,SSIS都会链接到外部数据源,验证数据源输入列的元数据。当该属性值设置为False时,SSIS延迟到运行该组件时才验证外部数据源的元数据。在设计时,SSIS 组件会缓存外部数据源的元数据,不会实时更新缓存中的元数据。

大多数SSIS组件,在跟外部系统(例如,Lookup转换,数据源/目的组件)交互时,都会获取外部列的元数据,并把这些元数据会缓存到Package文件(.dtsx)中。在设计阶段,组件会自动验证缓存的元数据,当和底层(underlying)的数据源不同时,组件会返回一个特殊的状态VS_NEEDSNEWMETADATA,SSIS引擎触发元数据刷新进程,刷新缓存,保证底层元数据和缓存的元数据相同。当在运行阶段时,如果缓存的元数据和底层的数据源不同,这会导致Package运行失败。

During the Validation phase, a component is supposed to check to make sure that the cached metadata in the package is still in sync with the underlying table/view/query. If there is a mismatch, the component returns a special status (VS_NEEDSNEWMETADATA). When this happens at design-time, SSIS triggers a metadata refresh by calling ReinitializeMetadata(). At runtime, this results in an error.

因为,元数据的验证可能是一个非常耗费时间、耗费资源的操作,因此,用户可以在设计阶段禁用 ValidateExternalMetadata 属性,提高Package的设计效率。

 

参考文档:

Have you used the ExecutionValue and ExecValueVariable properties?

原文地址:https://www.cnblogs.com/ljhdo/p/4983828.html