Integration Services (SSIS) 变量

变量存储 SQL Server Integration Services 包及其容器、任务和事件处理程序在运行时可以使用的值。 脚本任务和脚本组件中的脚本也可以使用变量。 将任务和容器按顺序组织为工作流的优先约束在其约束定义包含表达式时可以使用变量。

可以将 Integration Services 包中的变量用于下列目的:

  • 在运行时更新包元素的属性。 例如,可以动态设置 Foreach 循环容器所允许的并发可执行文件数。

  • 包含内存中的查找表。 例如,包可以运行加载带数据值的变量的执行 SQL 任务。

  • 加载带数据值的变量,然后使用这些变量指定 WHERE 子句中的搜索条件。 例如,脚本任务中的脚本可以更新执行 SQL 任务中的 Transact-SQL 语句所使用的变量的值。

  • 加载带整数的变量,然后使用该值控制包控制流中的循环。 例如,可以在 For 循环容器的计算表达式中使用变量来控制迭代。

  • 在运行时填充 Transact-SQL 语句的参数值。 例如,包可以运行执行 SQL 任务,然后使用变量动态设置 Transact-SQL 语句中的参数。

  • 生成包含变量值的表达式。 例如,派生列转换可以用变量值乘以列值所得结果来填充列。

系统变量和用户定义的变量

Integration Services 支持两种类型的变量:用户定义的变量和系统变量。 用户定义变量由包开发人员定义,系统变量由 Integration Services 定义。 可以创建包所需数量的用户定义变量,但不能另外创建系统变量。

在执行 SQL 任务用来在 SQL 语句中将变量映射到参数的参数绑定中,可以使用所有变量(系统和用户定义)。 有关详细信息,请参阅执行 SQL 任务执行 SQL 任务中的参数和返回代码

注意注意

用户定义变量和系统变量的名称是区分大小写的。

可以为所有 Integration Services 容器类型创建用户定义的变量,这些容器类型包括包、Foreach 循环容器、For 循环容器、序列容器、任务以及事件处理程序。 用户定义变量是容器中 Variables 集合的成员。

使用 SSIS 设计器创建包时,SSIS 设计器**“包资源管理器”选项卡上的“变量”**文件夹中可以看到 Variables 集合的成员。 这些文件夹列出了用户定义变量和系统变量。

可以使用下列方式配置用户定义变量:

  • 提供变量的名称和说明。

  • 指定变量的命名空间。

  • 指示变量是否在其值更改时引发事件。

  • 指示变量是只读还是读/写。

  • 使用表达式的计算结果设置变量值。

  • 在包或包对象(如任务)的范围内创建变量。

  • 指定变量的值和数据类型。

对系统变量唯一可配置的选项是指定变量在更改值时是否引发事件。

不同的容器类型有一组不同的系统变量可用。 有关包及其元素所使用的系统变量的详细信息,请参阅系统变量

有关变量的现实使用情况的详细信息,请参阅在包中使用变量

变量属性

您可以通过在**“变量”窗口或“属性”**窗口中设置以下属性来配置用户定义的变量。 某些属性只在“属性”窗口中提供。

注意注意

对系统变量唯一可配置的选项是指定变量在更改值时是否引发事件。

  • Description
    指定变量的说明。

  • EvaluateAsExpression
    当此属性设置为 True 时,所提供的表达式用于设置变量值。

  • Expression
    指定分配给变量的表达式。

  • Name
    指定变量名称。

  • Namespace
    Integration Services 提供两个命名空间,UserSystem。 默认情况下,自定义变量位于 User 命名空间中,系统变量位于 System 命名空间中。 可以为用户定义变量创建其他命名空间,并可以更改 User 命名空间的名称,但不能更改 System 命名空间的名称,也不能向 System 命名空间添加变量或将系统变量分配到其他命名空间。

  • RaiseChangedEvent
    当此属性设置为 True 时,如果变量更改了值,则引发 OnVariableValueChanged 事件。

  • ReadOnly
    当此属性设置为 False 时,此变量是可读\写的。

  • Scope

    注意注意

    只能通过在“变量”窗口中单击“移动变量”来更改此属性设置。

    变量在包的作用域内或者包中的容器、任务或事件处理程序的作用域内创建。 因为包容器位于容器层次结构的顶部,所以包作用域内的变量所起作用类似于全局变量,而且这些变量可由包中所有容器使用。 同样,在 For 循环容器等容器的范围内定义的变量可由 For 循环容器中所有任务或容器使用。

    如果包使用执行包任务运行其他包,则可以使用父包变量配置类型,使在调用的包或执行包任务范围内定义的变量可供被调用的包使用。 有关详细信息,请参阅包配置

  • IncludeInDebugDump
    指示调试转储文件中是否包括变量值。

    对于用户定义的变量和系统变量,InclueInDebugDump 选项的默认值为 true。

    但是,对于用户定义的变量,在满足以下条件时系统将 IncludeInDebugDump 选项重置为 false:

    • 如果 EvaluateAsExpression 变量属性设置为 true,则系统将 IncludeInDebugDump 选项重置为 false。

      若要在调试转储文件中包括表达式文本作为变量值,请将 IncludeInDebugDump 选项设置为 true。

    • 如果变量数据类型更改为字符串,则系统将 IncludeInDebugDump 选项重置为 false。

    在系统将 IncludeInDebugDump 选项重置为 false 时,该设置可能会覆盖用户选择的值。

  • Value
    用户定义变量的值可以是文字或表达式。 变量包含设置变量值和值的数据类型的选项。 这两种属性必须兼容:例如,字符串值不能与整数数据类型一起使用。

    如果将变量配置为作为表达式进行计算,则必须提供表达式。 在运行时计算表达式,而该变量将设置为计算结果。 例如,如果变量使用表达式 DATEPART("month", GETDATE()) ,则变量的值与当前日期月份部分的数字相同。 表达式必须是使用 SSIS 表达式语法的有效表达式。 表达式和变量一起使用时,表达式可以使用文字以及表达式语法所提供的运算符和函数,但表达式不能引用包中数据流的列。 表达式的最大长度为 4000 个字符。 有关详细信息,请参阅 Integration Services (SSIS) 表达式

  • ValueType

    注意注意

    此属性值出现在“变量”窗口的“数据类型”列中。

    指定变量值的数据类型。

配置变量

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

有关可以在 SSIS 设计器中设置的属性的详细信息,请参阅“变量”窗口

若要了解变量属性的详细信息,以及关于以编程方式设置这些属性的详细信息,请参阅 Variable

相关任务

添加、删除、更改包中用户定义变量的作用域

设置用户定义变量的属性

在子包中使用变量和参数的值

将查询参数映射到数据流组件中的变量

相关内容

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

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


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