将值/变量传递给Dtsx / SET \ Package.Variables [User :: NameVariable];“value”ERROR

时间:2011-11-12 11:05:00

标签: sql-server batch-file ssis flat-file

我想将值传递给ssis包,但我有一个错误

我执行批处理,命令

dtexec /F "c:\MyPackage.dtsx" /SET \Package.Variables[User::Valore].Properties[Value];2

这是错误(警告):

  

C:> dtexec / F“c:\ AnagraficaTOC.dtsx”/ SET \ Package.Variables [User :: Valore] .Prop   ERTIES [数值]; 2   Microsoft(R)SQL Server执行包实用程序   64位版本10.50.2500.0   版权所有(C)Microsoft Corporation 2010.保留所有权利。

     

开始时间:11:30:10   警告:2011-11-12 11:30:10.95   代码:0x80012017   资料来源:AnagraficaTOC   描述:包路径引用了无法找到的对象:“\ Pa   ckage.Variables [User :: Valore] .Properties [Value]“。这是在尝试时发生的   用于解析无法找到的对象的包路径。   结束警告   DTExec:无法设置\ Package.Variables [User :: Valore] .Properties [Value] value t   o 2。   开始时间:11:30:10   完成时间:11:30:10   经过时间:0.203秒

这是什么意思?语法看起来对我来说,我检查了很多网站,有什么问题? 谢谢大家!

2 个答案:

答案 0 :(得分:1)

假设您的变量名称为Valore并且位于包级别范围内,您的语法看起来是正确的。

变量区分大小写,如果它名为valore,VAlore等,它将不匹配。

可以在程序的任何级别创建变量,因此范围很重要。找到变量Valore并验证它的范围是否在包级别(Scope将与Package.Name属性匹配)。这是一个如何引用在数据流任务中声明的变量的示例,该变量嵌套在一个Sequence Container中。

\Package\Sequence Container\Data Flow Task.Variables[User::something].Properties[Value]

我整理了一个simple package并使用您的输入调用它。它运作良好

C:\src\SSISHackAndSlash\SSISHackAndSlash>dtexec /F ".\AnagraficaTOC.dtsx" /SET \Package.Variables[User::Valore].Properties[Value];2
Microsoft (R) SQL Server Execute Package Utility
Version 10.50.2500.0 for 64-bit
Copyright (C) Microsoft Corporation 2010. All rights reserved.

Started:  8:05:45 AM
Warning: 2011-11-12 08:05:45.93
   Code: 0x00000000
   Source: Script Task value check
   Description: Valore : 2
End Warning
DTExec: The package execution returned DTSER_SUCCESS (0).
Started:  8:05:45 AM
Finished: 8:05:45 AM
Elapsed:  0.328 seconds

我还在批处理文件中使用上面的命令行进行了测试,它也按预期工作。

最后,您似乎已经为我们擦除了输入

"dtexec /F "c:\MyPackage.dtsx" /SET \Package.Variables[User::Valore].Properties[Value];2"

VS

dtexec /F "c:\AnagraficaTOC.dtsx" /SET \Package.Variables[User::Valore].Prop erties[Value];2 

尽管在第二个示例中属性中有空格,但我认为这与复制值有关,因为错误消息具有正确的路径。第一个在错误的位置有引号(至少当我运行它时,如果我收到错误 - 找不到指定的路径)可能问题是你正在查看旧版本的包(或者你有它的多个副本)?

答案 1 :(得分:0)

遇到了同样的问题,通过在ssis变量窗格中将名称空间从config更改为user得以解决