Символ переменной пространства пакета служб SSIS не принят - PullRequest
7 голосов
/ 28 июля 2010

Я пытаюсь выполнить пакет служб SSIS в SQL 2005, используя следующее:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
 /SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\"

это дает:

Option "Batch " is not valid.

Пробел в конце слова «Пакет» внутри кавычек дал мне подсказку, что, возможно, он рассматривает финальную обратную косую черту как побег. Поэтому я попробовал это так:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
 /SET "\Package.Variables[FileFolder].Value";"\\\\SomeServer\\Someshare\\Output Batch\\"

Это позволило запустить пакет, но когда эта переменная используется в качестве имени плоского файла для вывода данных, теперь выдается следующая ошибка:

Warning: 2010-07-27 14:36:38.23
   Code: 0x8007007B
   Source: Data Flow Task Flat File Destination [72]
   Description: The filename, directory name, or volume label syntax is incorrect.
End Warning
Error: 2010-07-27 14:36:38.23
   Code: 0xC020200E
   Source: Data Flow Task Flat File Destination [72]
   Description: Cannot open the datafile "\\\\SomeServer\\Someshare\\Output Batch\FlatFile.txt".
End Error

Что дает?

1 Ответ

9 голосов
/ 28 июля 2010

В сообщении об ошибке, в котором указан файл данных с ошибками, одиночная обратная косая черта после слова «Пакет» дает подсказку, что, возможно, затрагивается только обратная косая черта.

Некоторое тестирование показало, что по какой-то странной причине, когда последний символ переменной пакета должен иметь обратную косую черту, SSIS требует его удвоения. Это применимо даже при использовании графического интерфейса пользователя и выборе задания типа «Пакет служб интеграции SQL Server» и нажатии на вкладку «Задать значения»: конечный обратный слеш должен быть удвоен.

Последняя рабочая команда:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
 /SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\\"

С окончательной двойной обратной косой чертой.

...