脚本组件

脚本组件承载脚本,并使包能够包含和运行自定义的脚本代码。可以将包中的脚本组件用于下列目的:

  • 将多个转换应用于数据,而不是在数据流中使用多个转换。例如,脚本可以将两列中的值相加,然后计算和的平均值。

  • 访问现有 .NET 程序集中的业务规则。例如,脚本可以应用指定 Income 列中有效值范围的业务规则。

  • 除 Integration Services 表达式语法提供的函数和运算符之外,还可使用自定义公式和函数。例如,使用 LUHN 公式验证信用卡号。

  • 验证列数据,并跳过包含无效数据的记录。例如,脚本可以评估邮资额的合理性,并跳过金额过高或过低的记录。

脚本组件为将自定义函数纳入数据流提供了简便快捷的方法。但是,如果您计划在多个包中重新使用脚本代码,则应考虑编写自定义组件,而不使用脚本组件。有关详细信息,请参阅开发自定义数据流组件

注意注意

如果脚本组件包含尝试读取 NULL 列值的脚本,则在您运行包时此脚本组件将失败。建议您的脚本先使用 IsNull 方法确定相应列是否为 NULL,再尝试读取该列的值。

脚本组件可用作源、转换或目标。该组件支持一个输入和多个输出。根据其使用方式,该组件可以支持一个输入或多个输出,也可二者都支持。脚本由输入或输出中的每一行调用。

  • 如果用作源,则脚本组件支持多个输出。

  • 如果用作转换,则脚本组件支持一个输入和多个输出。

  • 如果用作目标,则脚本组件支持一个输入。

脚本组件不支持错误输出。

确定将此脚本组件作为包的正确选择之后,必须配置输入和输出、开发该组件使用的脚本并配置组件本身。

了解脚本组件模式

在 SSIS 设计器中,脚本组件具有两种模式:元数据设计模式和代码设计模式。在元数据设计模式中,可以添加和修改脚本组件的输入和输出,但不能编写代码。配置完所有的输入和输出后,即可切换至代码设计模式编写脚本。脚本组件从输入和输出的元数据自动生成基代码。如果在脚本组件生成基代码后更改元数据,则您的代码可能无法再编译,因为更新的基代码可能与您的代码不兼容。

编写组件使用的脚本

脚本组件将 MicrosoftVisual Studio Tools for Applications (VSTA) 用作编写脚本的环境。您可以从**“脚本转换编辑器”**访问 VSTA。有关详细信息,请参阅脚本转换编辑器(“脚本”页)

脚本组件提供一个 VSTA 项目,其中包含一个名为 ScriptMain 的自动生成的类,表示组件元数据。例如,如果将脚本组件用作具有三个输出的转换,则 ScriptMain 为每个输出都包含一种方法。ScriptMain 是脚本的入口点。

VSTA 包含 Visual Studio 环境的所有标准功能,如具有颜色编码的 Visual Studio 编辑器、IntelliSense 和对象浏览器。脚本组件使用的脚本存储在包定义中,设计包时,脚本代码将临时写入项目文件。

VSTA 支持 MicrosoftVisual Basic 2008 和 MicrosoftVisual C# 2008 编程语言。

有关如何对脚本组件进行编程的信息,请参阅用脚本组件扩展数据流。有关如何将脚本组件配置为源、转换或目标的更多特定信息,请参阅开发特定类型的脚本组件。有关说明脚本组件使用的其他示例(如 ODBC 目标),请参阅 其他脚本组件示例

注意注意

在早期版本中您可以指示是否对脚本进行预编译,而在 SQL Server 2008 Integration Services (SSIS) 中,不同的是,所有脚本都要预编译。脚本进行预编译后,运行时将不加载语言引擎,因此包运行得更快。但是,预编译二进制文件占用了大量的磁盘空间。

配置脚本组件

可以采用下列方法来配置脚本组件:

  • 选择要引用的输入列。

    注意注意

    当您使用 SSIS 设计器时,可以仅配置一个输入。

  • 提供组件运行的脚本。

  • 指定脚本语言。

  • 提供逗号分隔的只读和读/写变量列表。

  • 添加更多输出,并且添加脚本要向其赋值的输出列。

可以通过 SSIS 设计器或以编程方式来设置属性。

配置设计器中的脚本组件

有关可在**“脚本转换编辑器”**对话框中设置的属性的详细信息,请单击以下主题之一:

有关在 SSIS 设计器中如何设置这些属性的详细信息,请单击以下主题:

以编程方式配置脚本组件

有关可在**“属性”**窗口中或以编程形式设置的属性的详细信息,请单击以下主题之一:

有关如何设置属性的详细信息,请单击下列主题之一:

Integration Services 图标(小) 使 Integration Services 保持最新

若要从 Microsoft 获得最新的下载内容、文章、示例和视频,以及从社区获得所选解决方案,请访问 MSDN 或 TechNet 上的 Integration Services 页:

若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。