SQL Server Integration Services 提供了一组系统变量,其中存储有关正在运行的包及其对象的信息。可以在表达式和属性表达式中使用这些变量自定义包、容器、任务和事件处理程序。
可以在执行 SQL 任务用来将变量映射到参数的参数绑定中使用所有变量(系统和用户定义)。
包的系统变量
下表介绍 Integration Services 为包提供的系统变量。
系统变量 | 数据类型 | 说明 |
---|---|---|
CancelEvent | Int32 | Windows 事件对象的句柄,任务可以向其发送信号以指示任务应停止运行。 |
CreationDate | DateTime | 包的创建日期。 |
CreatorComputerName | 字符串 | 创建此包使用的计算机。 |
CreatorName | 字符串 | 包生成者的名称。 |
ExecutionInstanceGUID | 字符串 | 正在执行的包实例的唯一标识符。 |
InteractiveMode | 布尔值 | 指示是否在交互模式中运行包。如果包正在 SSIS 设计器中运行,则此属性将设置为 True。如果包正在使用 DTExec命令提示实用工具运行,则此属性将设置为 False。 |
LocaleId | Int32 | 包所使用的区域设置。 |
MachineName | 字符串 | 正在运行包的计算机的名称。 |
OfflineMode | 布尔值 | 指示该包是否处于脱机模式下。脱机模式不获取与数据源的连接。 |
PackageID | 字符串 | 包的唯一标识符。 |
PackageName | 字符串 | 包的名称。 |
StartTime | DateTime | 包开始运行的时间。 |
UserName | 字符串 | 启动包的用户的帐户。用户名由域名限定。 |
VersionBuild | Int32 | 包版本。 |
VersionComment | 字符串 | 包版本的注释。 |
VersionGUID | 字符串 | 版本的唯一标识符。 |
VersionMajor | Int32 | 包的主版本。 |
VersionMinor | Int32 | 包的次版本。 |
容器的系统变量
下表介绍 Integration Services 为 For 循环、Foreach 循环和序列容器提供的系统变量。
系统变量 | 数据类型 | 说明 | 容器 |
---|---|---|---|
LocaleId | Int32 | 容器使用的区域设置。 | For 循环容器 Foreach 循环容器 序列容器 |
任务的系统变量
下表介绍 Integration Services 为任务提供的系统变量。
系统变量 | 数据类型 | 说明 |
---|---|---|
CreationName | 字符串 | 任务的名称。 |
LocaleId | Int32 | 任务所使用的区域设置。 |
TaskID | 字符串 | 任务实例的唯一标识符。 |
TaskName | 字符串 | 任务实例的名称。 |
TaskTransactionOption | Int32 | 任务使用的事务选项。 |
事件处理程序的系统变量
下表介绍 Integration Services 为事件处理程序所提供的系统变量。并非所有变量对所有事件处理程序都可用。
系统变量 | 数据类型 | 说明 | 事件处理程序 | ||
---|---|---|---|---|---|
Cancel | 布尔值 | 指示在出现错误、警告或查询取消时事件处理程序是否停止运行。 | OnError 事件处理程序 OnWarning 事件处理程序 OnQueryCancel 事件处理程序 | ||
ErrorCode | Int32 | 错误标识符。 | OnError 事件处理程序 OnInformation 事件处理程序 OnWarning 事件处理程序 | ||
ErrorDescription | 字符串 | 错误的说明。 | OnError 事件处理程序 OnInformation 事件处理程序 OnWarning 事件处理程序 | ||
ExecutionStatus | 布尔值 | 当前的执行状态。 | OnExecStatusChanged 事件处理程序 | ||
ExecutionValue | DBNull | 执行值。 | OnTaskFailed 事件处理程序 | ||
LocaleId | Int32 | 事件处理程序所使用的区域设置。 | 所有事件处理程序 | ||
PercentComplete | Int32 | 已完成工作的百分比。 | OnProgress 事件处理程序 | ||
ProgressCountHigh | Int32 | 64 位值的高位部分,指示由 OnProgress 事件处理的操作的总数。 | OnProgress 事件处理程序 | ||
ProgressCountLow | Int32 | 64 位值的低位部分,指示由 OnProgress 事件处理的操作的总数。 | OnProgress 事件处理程序 | ||
ProgressDescription | 字符串 | 进度说明。 | OnProgress 事件处理程序 | ||
Propagate | 布尔值 | 指示是否将该事件传播到较高等级的事件处理程序。
| 所有事件处理程序 | ||
SourceDescription | 字符串 | 事件处理程序中引发事件的可执行文件的说明。 | 所有事件处理程序 | ||
SourceID | 字符串 | 引发事件的事件处理程序中可执行文件的唯一标识符。 | 所有事件处理程序 | ||
SourceName | 字符串 | 引发事件的事件处理程序中可执行文件的名称。 | 所有事件处理程序 | ||
VariableDescription | 字符串 | 变量说明。 | OnVariableValueChanged 事件处理程序 | ||
VariableID | 字符串 | 变量的唯一标识符。 | OnVariableValueChanged 事件处理程序 |
在参数绑定中使用系统变量
通常在包运行时,需要在表中保存系统变量的值。例如,一个包动态创建一个表,并在表列中写入创建该表的包执行实例的 GUID。
如果在执行 SQL 任务所使用的 SQL 语句中使用系统变量来映射参数,那么重要的是要将每个参数绑定的数据类型设置为系统变量的数据类型。否则,系统变量的值可能被错误转换。例如,如果在具有 GUID 数据类型的参数绑定中使用 ExecutionInstanceGUID 系统变量,而该变量具有字符串数据类型,并包含表示包的执行实例的 GUID 的字符串,则包实例的 GUID 将被错误转换。
此规则也适用于用户定义的变量。但是,由于无法更改系统变量的数据类型,并且必须调整对这些变量的使用以适应该数据类型,因此用户定义变量更为灵活。在参数绑定中使用的用户定义变量通常是以与映射到它们的参数的数据类型兼容的数据类型来定义的。