如何在运行时更改包变量值?

时间:2012-04-13 14:29:59

标签: sql ssis

我正在运行SSIS包,我想在运行时设置所需变量的值。这是一个例子

variable1= 1145554478 nvarchar(30)

我正在使用nvarchar,因为我在字符串中添加了更多字符。

variable2= [ + variable1 + _S] 

variable1variable2是包变量。

我已经搜索了在运行时为变量设置值的方法。正如我所想,似乎可以使用SQL任务编辑器完成。所以,我创建了一个。将variable1设置为输入值,将ResultSet设置为单行,并将其设置为variable2。

然后在我写的代码中

set Variable2 = '[' + ? + '_S]'

它不起作用,这是错误

  

错误:0xC002F210执行SQL任务,执行SQL任务:执行   使用以下内容查询“set Variable2 ='['+?+'_ S]'”失败   错误:“第1行:'='附近的语法错误。”可能的失败原因:   查询问题,“ResultSet”属性设置不正确,   参数设置不正确,或连接未正确建立。   任务失败:执行SQL任务。

SQL任务编辑器是在运行时设置变量的最佳方式吗?

我认为我在任务编辑器中编写的代码是错误的,因为那里的代码并不总是与常用的普通SQL相同。

3 个答案:

答案 0 :(得分:3)

您不能在SQL语句中设置SSIS变量的值,而是返回值并将其分配给您的变量。

将您的陈述更改为

SELECT '[' + ? + '_S]'

将结果集更改为“单行”,然后在左侧的“结果集”下添加结果名称为0的变量

答案 1 :(得分:3)

这是一种在运行时根据另一个变量的值来操作变量值的方法。该示例使用SSIS 2008 R2,但所有SSIS版本的功能都相同。

  • 创建新的SSIS包。
  • 右键单击包中的任意位置,然后从上下文菜单中选择Variables。将显示变量窗格。
  • 变量窗格中,创建两个名为Variable1Variable2的数据类型为 String 的新变量。
  • 我们设置Variable1的值为 Test_Value

    Variables

  • 选择第二个变量Variable2,然后按F4以显示“属性”窗格。

  • 在属性窗格中,将属性EvaluateAsExpression更改为 True
  • 然后点击Expression媒体资源上的省略号按钮。

    Properties of Variable2

  • 在“表达式生成器”对话框中,将表达式 "[" + @[User::Variable1] + "_S]" 粘贴到Expression文本区域中。

  • 如果单击“评估表达式”按钮,您将看到Variable2将评估的值。在运行时期间,变量Variable2将使用表达式自动计算为Variable1中的值。

  • 表达式构建器也可以允许制定更复杂的表达式。 Click this link查看另一个表达示例。

希望有所帮助。

Expression Builder

答案 2 :(得分:2)

最简单的方法是(通常)创建一个脚本任务,然后用C#或VB编写代码。