SSIS вставляет пробел в вычисляемую переменную для «Выполнить задачу процесса» - PullRequest
0 голосов
/ 30 мая 2020

Я использую SSIS вместе с WinSCP для sh файла. Казалось, все идет нормально, но я получаю сообщение об ошибке. Похоже, что в какой-то момент SSIS по какой-то причине помещает "фантомное пространство" в мою переменную.

Переменная настроена следующим образом:

"/command \"open sftp://" + @[User::SFTP_User]+":"+ @[User::SFTP_Pass] + "@" +  @[User::SFTP_Site] + " -hostkey=\"\"ssh-rsa 2048 "+ @[User::SFTP_Hostkey]  +"\"\"\" \"put -nopreservetime "+  @[User::InventoryFile] + " " +  @[User::PurchaseFile] + " " + @[User::SFTP_Location]  + "\" \"exit\""

и используется как строка сценария для WinSCP.com.

Когда я беру вычисленное значение и копирую его в Notepad ++, я получаю что-то вроде

/command "open sftp://USER:Pas$word@ftp.site.com -hostkey=""ssh-rsa 2048 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00""" "put -nopreservetime \\my\path\file.csv \\my\path\file2.csv  /remote/path/" "exit"

ОДНАКО !!! Однако копирование / вставка этого в командную строку, а не в блокнот ++, дает

/command "open sftp://USER: Pas$word@ftp.site.com -hostkey=""ssh-rsa 2048 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00""" "put -nopreservetime \\my\path\file.csv \\my\path\file2.csv  /remote/path/" "exit"

ТАКЖЕ !!! когда я запускаю пакет, я получаю сообщение об ошибке:

Error: 0xC0029151 at WinSCP Files to MSA, Execute Process Task: In Executing "C:\Program Files (x86)\WinSCP\WinSCP.com" "/command "open sftp://USER: Pas$word@ftp.site.com -hostkey=""ssh-rsa 2048 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00""" "put -nopreservetime \\my\path\file.csv \\my\path\file2.csv  /remote/path/" "exit"" at "\\my\working\path\", The process exit code was "1" while the expected was "0".

Обратите внимание, что между «ПОЛЬЗОВАТЕЛЕМ:» и паролем есть лишний «» (пробел). Это нарушение команды. Также обратите внимание на то, что между файлами загрузки и местом загрузки есть дополнительное пространство (однако, это не имеет никакого вреда). Если я скопирую все это в командную строку и просто удалю это пространство после двоеточия, это сработает ...

Откуда берутся эти фантомные пространства и / или как мне от них избавиться?

1 Ответ

0 голосов
/ 22 июня 2020

Мне удалось решить эту проблему, зайдя в Notepad ++ и используя плагин «HEX Editor», чтобы увидеть скрытые символы.

Даже «Показать все символы» не отображало скрытые символы ...

Я уверен, что они пришли от копирования отформатированного текста в переменную. Было действительно странно, что в некоторых экземплярах вы могли скопировать / вставить их без форматирования, а в других случаях скрытые символы присутствовали бы. Обычно я использую notepad ++ в качестве инструмента (промежуточное копирование / вставка) для удаления форматирования, но он не удалял этих дьяволов.

В любом случае, как только я нашел скрытые символы в редакторе HEX, я смог просто удалить их оттуда, переключитесь обратно в режим ASCII, скопируйте строку и вставьте ее обратно в программу SSIS и go оттуда. Проблема решена!

Спасибо всем - ваши идеи помогли мне найти решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...