【问题标题】:Pass Value/Variable to Dtsx /SET \Package.Variables[User::NameVariable];"value" ERROR将值/变量传递给 Dtsx /SET \Package.Variables[User::NameVariable];"value" ERROR
【发布时间】:2011-11-12 11:04:59
【问题描述】:

我想将一个值传递给 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 属性[值];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] 值 t 2。 开始时间:11:30:10 结束时间:11:30:10 经过:0.203 秒

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

【问题讨论】:

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


    【解决方案1】:

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

    变量区分大小写,因此如果它被命名为 valore、VALore 等,它将不匹配。

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

    \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"
    

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

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

    【讨论】:

    • 谢谢!您能否提供一个要传递的字符串类型变量的示例?
    【解决方案2】:

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

    【讨论】:

    • 这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review
    • 它与我昨天遇到的问题完全相同,以及我用来解决问题的确切解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 2020-10-30
    • 2013-05-04
    相关资源
    最近更新 更多