我想将值传递给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秒
这是什么意思?语法看起来对我来说,我检查了很多网站,有什么问题? 谢谢大家!
答案 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得以解决