Передать значение / переменную в Dtsx / SET \ Package.Variables [User :: NameVariable]; «значение» - PullRequest
1 голос
/ 12 ноября 2011

Я хочу передать значение в пакет 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 [Value]; 2 Утилита для выполнения пакетов Microsoft (R) SQL Server SQL ServerВерсия 10.50.2500.0 для 64-разрядных систем. Copyright (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] в 2. Начато: 11:30:10 Завершено: 11:30:10 Истекло: 0,203 секунды

Что это значит?Синтаксис выглядит мне правильно, я проверял на многих сайтах, что не так?Спасибо всем!

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Ваш синтаксис выглядит правильно, если ваша переменная имеет точное имя Valore и находится на уровне пакета.

Переменные чувствительны к регистру, поэтому, если они называются valore, VAlore и т. Д., Они не будут совпадать.

Переменные можно создавать на любом уровне в программе, поэтому область действия имеет значение.Найдите переменную Valore и убедитесь, что ее область действия находится на уровне пакета (область действия будет соответствовать свойству Package.Name).Это пример того, как ссылаться на переменную, объявленную внутри Задачи потока данных, которая вложена в контейнер последовательности.

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

Я собрал простой пакет и назвал это, используя ваш вход.Он работал нормально

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 

Несмотря на пробел в Properties во втором примере, я предполагаю, чтосвязано с копированием значений, поскольку сообщение об ошибке имеет правильный путь.Первый содержит кавычки в неправильных местах (по крайней мере, когда я запускаю его, как при условии, что я получаю ошибку - не могу найти указанный путь) Может быть проблема в том, что вы смотрите старую версию пакета (или у вас есть несколько копийиз этого)?

0 голосов
/ 09 ноября 2018

имел ту же проблему, был решен путем изменения пространства имен с конфигурации на пользователя в области переменных ssis

...