我在SSIS项目中定义了如下所示的参数
然后我想改变那些可选的在我的sql代理-作业,我定义如下。
甚至我尝试设置一个固定日期值而不是getdate,但它返回一个错误消息,告诉我
错误时间:2014-12-19 16:30:21.56验证码:0xC 001 F016来源: Package 描述:更改变量的值失败,因为它是参数变量。参数变量是只读的。结束错误DTExec:无法将\Package.Variables[startdate].Value设置为18.12.2014。启动时间:16:30:21结束时间:16:30:21经过时间:0.296秒。包执行失败。步骤失败。
参数是只读的吗?如果是,如果我只能在项目内部设置参数,使用参数的意义是什么?有变量,它们会做同样的工作.如果我做错了什么,请给予我一些提示?
我尝试添加getdate()而不是固定值已经在项目级别上,而不是在SQL作业内部,但它是不允许的,以及。为什么?
谢谢。
5条答案
按热度按时间wydwbb8l1#
我通过这个视频得到我的研究:https://www.youtube.com/watch?v=wBpBTl_vUBM
根据视频(从15:14开始),项目参数似乎只是只读的,包变量可以用于读取或写入。
enyaitl32#
我刚刚在VS2017中遇到了同样的问题,一个兼容级别为
SQL Server 2012
的包。我必须从执行SQL任务中删除变量的所有引用,从包上的变量列表中删除它,然后通过执行SQL任务将变量重新创建为新变量。这为我解决了这个问题。我认为这是一个bug,因为我甚至可以看到变量的ReadOnly
属性实际上被设置为False
。编辑:发现变量名后面有一个1,并且没有使用我想要的变量。我在包编辑器的变量列表中找不到变量名,所以我在记事本中打开它,发现变量的
ReadOnly
标志实际上设置为True
。更改标志修复了问题。pu3pd22g3#
请改为创建用户变量。它们位于包编辑器右上方难以理解的橡皮擦外观框下。工具提示只显示“Variables”,但它们存储在User命名空间而不是$Package中,因此您可以在项目中以User::varname的形式访问它们以进行参数Map,在表达式中以@[User::varname]的形式访问它们,最后从sqlagent作业步骤的“Set Values”选项卡中以(Case Sensitive)\Package.Variables[User::varname].Properties[Value]的形式访问它们。XML什至与上面的不同。但是,使用Visual Studio生成包配置文件更容易,您可以在其中选择变量覆盖。如果需要手工创建的命令行的路径,dtsConfig文件中会为您提供该路径。
643ylb084#
我不太明白你的意思,但是你可以通过,把变量和表达式,写成这样来解决这个问题。
0s0u357o5#
你可以把参数值传递给一个变量,用这个变量进行你需要的计算,然后在包中使用这个变量。