2013-12-13 60 views
0

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

编辑 我做变量赋值的原因是,如果最终用户的简化版,给任何值在配置文件中的变量,我要分配一些默认值,这些变量,然后分配变量表达式到其他变量。所有这些都是我正在尝试在脚本任务中完成的。不知道这是做这种事情的唯一方法。

+0

我很困惑。你指定你正在使用一个表达式,但你也试图通过脚本任务分配?你可以请进一步编辑你的问题,可能与此过程的屏幕截图和预期的输入和输出。 – billinkc

回答

1

我能够得到这个工作没有任何问题;我无法复制你的场景。以下是我所做的:

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

    @ [用户:: VAR1]

以上步骤正确地为Var2提供了从外部配置文件设置的Var1的值。为了测试这个工作,我添加了一个脚本任务和

  1. 在脚本任务编辑器,添加用户:: VAR2只读变量
  2. 在我的脚本的身体,我添加以下代码在运行时查看Var2的值:

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

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

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

+0

好心解释你的第二步上面是什么。你的意思是你包含Var1作为可配置变量?有点困惑于“映射” –

+0

我添加了一个链接到一个MSDN文章,解释了Package Configurations,它可以更好地解释并且比我以前更彻底。当你说你从一个配置文件中获取一个值时,我认为你正在使用Package Configurations。 –