【问题标题】:Parameter variables are read-only on SSIS package?参数变量在 SSIS 包上是只读的吗?
【发布时间】:2014-12-19 16:11:33
【问题描述】:

我在我的 SSIS 项目中定义了如下所示的参数

然后我想通过我的 sql 代理作业更改那些可选的,我定义如下。

即使我尝试设置修复日期值而不是 getdate 但它返回一条错误消息告诉我

错误:2014-12-19 16:30:21.56 代码:0xC001F016 来源: 包描述:更改变量的值失败 因为它是一个参数变量。参数变量是只读的。 结束错误 DTExec:无法设置 \Package.Variables[startdate].Value 值为 18.12.2014。开始时间:16:30:21 结束时间:16:30:21 结束时间: 0.296 秒。包执行失败。步骤失败。

参数是只读的吗?如果是的话,如果我只能在项目中设置参数,那么使用参数有什么意义。有变量,他们会做同样的工作。如果我做错了什么,请给我一些启发?

我尝试在项目级别而不是在 sql 作业中添加 getdate() 而不是修复值,但也不允许这样做。为什么?

谢谢。

【问题讨论】:

    标签: sql-server ssis sql-job


    【解决方案1】:

    我刚刚在 VS2017 中遇到了同样的事情,其中​​一个包的兼容性级别为 SQL Server 2012。我必须从 Execute SQL Task 中删除该变量的所有引用,从包上的变量列表中删除它,然后通过 Execute SQL Task 将变量重新创建为新变量。这为我解决了这个问题。我认为这是一个错误,因为我什至可以看到变量的ReadOnly 属性实际上设置为False。玩这个标志没有任何作用。

    编辑:发现变量名称附加了一个 1 并且没有使用我想要的变量。我在包编辑器的变量列表中找不到变量名,所以我在记事本中打开它,发现变量的ReadOnly标志实际上设置为True。更改标志解决了这个问题。

    【讨论】:

      【解决方案2】:

      我通过这个视频得到我的研究:https://www.youtube.com/watch?v=wBpBTl_vUBM

      根据视频(从 15:14 开始),项目参数似乎只是只读的,并且包变量可以用于读取或写入。

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      【解决方案3】:

      我不完全确定我是否遵循了您的问题,但您可以通过使这些变量和表达式具有这样的值来解决此问题。

      【讨论】:

      • 但是这个变量。我实际上是在谈论应该可以在 SSIS 包之外访问的参数。
      【解决方案4】:

      您可以将参数值传递给变量,使用变量进行所需的计算,然后使用包中的变量。

      【讨论】:

      • 这是一个非常好的建议,但我的问题是从 SSIS 项目外部访问参数并为其分配一个值。据我所知,变量不能在项目之外访问,对吧?
      • 要从包外部分配值,一种选择是使用参数,另一种选择是使用可以从包外部和包内部更新的表;您也可以使用 xml 文件,或您手头的任何其他数据源。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      相关资源
      最近更新 更多