【问题标题】:SSIS Variable as an Expression for another variableSSIS 变量作为另一个变量的表达式
【发布时间】:2013-12-13 21:35:56
【问题描述】:

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

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

【问题讨论】:

  • 我很困惑。您指定您正在使用表达式,但您还尝试通过脚本任务分配?您能否进一步编辑您的问题,可能包含屏幕截图以及此过程的预期输入和输出。

标签: sql-server-2008 ssis expression


【解决方案1】:

我能够毫无问题地让它工作;我无法复制你的场景。这是我所做的:

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

    @[用户::Var1]

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

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

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

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

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

【讨论】:

  • 请解释一下您上面的第 2 步。您的意思是您将 Var1 作为可配置变量包含在内吗?与“映射”有点混淆
  • 我添加了一个指向 MSDN 文章的链接,该文章解释了包配置,该文章解释得更好,而且比以往任何时候都更透彻。当您说您从配置文件中获取值时,我假设您正在使用包配置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多