脚本任务
脚本任务提供代码来执行内置任务中没有的函数以及 SQL ServerIntegration Services 提供的转换。脚本任务还可将函数组合到一个脚本中,而不必使用多个任务和转换。脚本任务用于执行必须在包中一次完成(或每个枚举对象一次完成)、而不是每个数据行一次完成的工作。
可以将脚本任务用于下列目的:
用内置连接类型不支持的其他技术访问数据。例如,脚本可使用 Active Directory 服务接口 (ADSI) 访问 Active Directory,并从中提取用户名。
创建特定于包的性能计数器。例如,脚本可以创建一个性能计数器,在运行复杂任务或性能差的任务时,该计数器将被更新。
标识是否指定的文件为空或它们包含多少行,然后基于该信息影响包中的控制流。例如,如果文件包含零行,则将变量的值设置为 0,然后计算该值的优先约束将防止文件系统任务复制此文件。
如果必须使用脚本对集中的每个数据行执行相同的工作,则应当使用脚本组件而不是脚本任务。例如,如果希望评估邮资金额的合理性,从而跳过金额极高或极低的数据行,则应当使用脚本组件。有关详细信息,请参阅脚本组件。
如果多个包使用一个脚本,请考虑使用自定义任务而不要使用脚本任务。有关详细信息,请参阅开发自定义任务。
确定脚本任务是包的正确选择之后,必须开发该任务使用的脚本,还必须配置任务本身。
编写和运行任务使用的脚本
脚本任务将 MicrosoftVisual Studio Tools for Applications (VSTA) 用作编写脚本的环境和运行这些脚本的引擎。
VSTA 提供 Visual Studio 环境的所有标准功能,如具有颜色编码的 Visual Studio 编辑器、IntelliSense 和对象资源管理器。VSTA 还可以使用与其他 Microsoft 开发工具使用的调试器。脚本中的断点与 Integration Services 任务和容器上的断点可以无缝集合。VSTA 支持 MicrosoftVisual Basic 2008 和 MicrosoftVisual C# 2008 这两种编程语言。
若要运行脚本,运行包的计算机上必须安装有 VSTA。运行包时,任务将加载脚本引擎并运行脚本。可以通过向项目中的程序集添加引用的方式来访问脚本中的外部 .NET 程序集。
注意 |
---|
在早期版本中您可以指示是否对脚本进行预编译,而在 SQL Server 2008 Integration Services (SSIS) 中,不同的是,所有脚本都要预编译。脚本进行预编译后,运行时将不加载语言引擎,因此包运行得更快。但是,预编译二进制文件占用了大量的磁盘空间。 |
配置脚本任务
可以采用下列方法来配置脚本任务:
提供任务运行的自定义脚本。
在 VSTA 项目中指定 Integration Services 运行时作为脚本任务代码入口点调用的方法。
指定脚本语言。
根据需要提供脚本中使用的只读和读/写变量列表。
可以通过 SSIS 设计器或以编程方式来设置这些属性。
在设计器中配置脚本任务
下表描述可以为脚本任务进行记录的 ScriptTaskLogEntry 事件。在**“配置 SSIS 日志”对话框的“详细信息”**选项卡上选择 ScriptTaskLogEntry 事件,以便进行日志记录。有关详细信息,请参阅在包中实现日志记录和日志记录的自定义消息。
日志项 |
说明 |
---|---|
ScriptTaskLogEntry |
报告在脚本中实现日志记录的结果。该任务在每次调用 Dts 对象的 Log 方法时都编写一个日志条目。然后,在运行代码时编写这些条目。有关详细信息,请参阅脚本任务中的日志记录。 |
有关可以在 SSIS 设计器中设置的属性的详细信息,请单击下列主题之一:
有关在 SSIS 设计器中如何设置这些属性的详细信息,请单击下列主题:
以编程方式配置脚本任务
有关以编程方式设置这些属性的详细信息,请单击以下主题:
|