脚本组件

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

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

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

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

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

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

注释

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

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

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

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

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

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

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

了解脚本组件模式

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

编写组件使用的脚本

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

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

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

VSTA 支持 Microsoft Visual C# 和 Microsoft Visual Basic 编程语言。

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

注释

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

配置脚本组件

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

  • 选择要引用的输入列。

    注释

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

  • 提供组件运行的脚本。

  • 指定脚本语言。

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

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

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

配置设计器中的脚本组件

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

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

以编程方式配置脚本组件

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

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

Integration Services 转换

使用脚本组件扩展数据流