脚本任务

脚本任务提供代码来执行内置任务中没有的函数以及 SQL Server Integration Services 提供的转换。脚本任务还可将函数组合到一个脚本中,而不必使用多个任务和转换。脚本任务用于执行必须在包中一次完成(或每个枚举对象一次完成)、而不是每个数据行一次完成的工作。

可以将脚本任务用于下列目的:

  • 用内置连接类型不支持的其他技术访问数据。例如,脚本可使用 Active Directory 服务接口 (ADSI) 访问 Active Directory,并从中提取用户名。

  • 创建特定于包的性能计数器。例如,脚本可以创建一个性能计数器,在运行复杂任务或性能差的任务时,该计数器将被更新。

  • 标识是否指定的文件为空或它们包含多少行,然后基于该信息影响包中的控制流。例如,如果文件包含零行,则将变量的值设置为 0,然后计算该值的优先约束将防止文件系统任务复制此文件。

如果必须使用脚本对集中的每个数据行执行相同的工作,则应当使用脚本组件而不是脚本任务。例如,如果希望评估邮资金额的合理性,从而跳过金额极高或极低的数据行,则应当使用脚本组件。有关详细信息,请参阅脚本组件

如果多个包使用一个脚本,请考虑使用自定义任务而不要使用脚本任务。有关详细信息,请参阅开发自定义任务

确定脚本任务是包的正确选择之后,必须开发该任务使用的脚本,还必须配置任务本身。

编写和运行任务使用的脚本

脚本任务将 Microsoft Visual Studio Tools for Applications (VSTA) 用作编写脚本的环境和运行这些脚本的引擎。

VSTA 提供 Visual Studio 环境的所有标准功能,如具有颜色编码的 Visual Studio 编辑器、IntelliSense 和对象资源管理器。VSTA 还可以使用与其他 Microsoft 开发工具使用的调试器。脚本中的断点与 Integration Services 任务和容器上的断点可以无缝集成。VSTA 支持 Microsoft Visual Basic 2008 和 Microsoft Visual C# 2008 编程语言。

若要运行脚本,运行包的计算机上必须安装有 VSTA。运行包时,任务将加载脚本引擎并运行脚本。可以通过向项目中的程序集添加引用的方式来访问脚本中的外部 .NET 程序集。

注意注意

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

配置脚本任务

可以采用下列方法来配置脚本任务:

  • 提供任务运行的自定义脚本。

  • 在 VSTA 项目中指定 Integration Services 运行时作为脚本任务代码入口点调用的方法。

  • 指定脚本语言。

  • 根据需要提供脚本中使用的只读和读/写变量列表。

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

在设计器中配置脚本任务

下表描述可以为脚本任务进行记录的 ScriptTaskLogEntry 事件。在**“配置 SSIS 日志”对话框的“详细信息”**选项卡上选择 ScriptTaskLogEntry 事件,以便进行日志记录。有关详细信息,请参阅在包中实现日志记录日志记录的自定义消息

日志项

说明

ScriptTaskLogEntry

报告在脚本中实现日志记录的结果。该任务在每次调用 Dts 对象的 Log 方法时都编写一个日志条目。然后,在运行代码时编写这些条目。有关详细信息,请参阅脚本任务中的日志记录

有关可以在 SSIS 设计器中设置的属性的详细信息,请单击下列主题之一:

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

以编程方式配置脚本任务

有关以编程方式设置这些属性的详细信息,请单击以下主题:

外部资源

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

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

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