参数变量在SSIS包上是只读的吗?

时间:2014-12-19 16:11:34

标签: sql-server ssis sql-job

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

enter image description here

然后我想通过我的sql agent-job更改那些可选项,我的定义如下。

enter image description here

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

  

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

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

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

感谢。

3 个答案:

答案 0 :(得分:0)

我不完全确定我会按照你的问题解决这个问题,但你可以通过这些变量和表达式来解决这个问题。

Expression

Getdate

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

编辑:发现变量名称后面附加了1,并且未使用我想要的变量。我在程序包编辑器的“变量”列表中找不到变量名,因此在记事本中将其打开,发现该变量的ReadOnly标志实际上设置为True。更改标志可以解决此问题。