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