SSIS变量作为另一个变量的表达式

时间:2013-12-13 09:49:31

标签: sql-server-2008 ssis expression

我正在使用SSIS 2008.我有一个变量,它从配置文件中获取其值。我想将其值分配给另一个变量。为此,我创建了另一个变量,并将其EvaluateAsExpression属性设置为TRUE,并将变量(从配置文件中取值)写为其表达式。但是在运行时,分配没有发生。即使没有错误。

修改 我进行变量赋值的原因是,如果最终用户没有给配置文件中的变量赋值,我想为这些变量分配一些默认值,然后将变量作为表达式分配给其他变量。这一切都是我在脚本任务中尝试做的。不知道这是否是做这类事情的唯一方法。

1 个答案:

答案 0 :(得分:1)

我能够毫无问题地使用它;我无法复制你的场景。这是我做的:

  1. 设置两个包级别的字符串变量:“Var1”和“Var2”。
  2. 我打开了我的包配置(SSIS>包配置)并创建了一个新的映射,它从配置文件中设置我的Var1变量的Value属性。 (有关详细信息,请参阅MSDN有关程序包配置的文章:http://msdn.microsoft.com/en-us/library/cc895212.aspx
  3. 在“变量”窗口(视图>其他Windows>变量)中,我将我的Var2的表达式设置为等于

    @ [用户:: VAR1]

  4. 上述步骤正确地为Var2提供了从外部配置文件设置的Var1的值。为了测试这是否有效,我添加了一个脚本任务和

    1. 在脚本任务编辑器中,将User :: Var2添加为只读变量
    2. 在我的脚本正文中,我添加了以下代码,以便在运行时查看Var2的值:

      public void Main()     {         MessageBox.Show(Dts.Variables [0] .Value.ToString());     }

    3. 在运行时,弹出的消息框显示正确的值。

      但我确实注意到Var2窗口中Var2的Value属性并不总是显示正确的值 - 有时它显示设置为默认值Var1的任何值。即使在“变量”窗口中存在这种差异,在我的实际包代码中使用Var2时,它总是设置为正确的值。