SSIS 在 "Execute Process Task" 的计算变量中插入 space
SSIS inserting space in computed variable for "Execute Process Task"
我将 SSIS 与 WinSCP 结合使用来推送文件。一切似乎都很顺利,但我遇到了错误。看起来 SSIS 在某些时候出于某种原因将 "phantom space" 放入我的变量中。
变量是这样设置的:
"/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"
但是!!! Copying/pasting 这是命令行,而不是记事本++,但是,产量
/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".
请注意 "USER:" 和密码之间多了一个“ ” (space)。这是在破坏命令。另请注意,上传文件和上传位置之间有一个额外的 space (不过,这似乎没有任何不良影响)。如果我将整个内容复制到命令提示符下,然后将冒号后的 space 删除,它就可以工作...
这些幻影 space 来自哪里 and/or 我该如何摆脱它们?
我可以通过进入 Notepad++ 并使用“HEX Editor”插件查看隐藏字符来解决这个问题。
即使“显示所有字符”也没有显示隐藏字符...
我确定它们来自从格式化文本复制到变量中。真的很奇怪,在 一些 实例中,您可以 copy/paste 它们没有格式,而在其他情况下,隐藏字符会在那里。我通常使用记事本++作为删除格式的工具(中级copy/paste),但它并没有删除这些恶魔。
无论如何,一旦我在 HEX 编辑器中找到隐藏的字符,我就可以简单地从那里删除它们,切换回 ASCII 模式,复制字符串并将其粘贴回 SSIS 程序,然后从那里开始。问题已解决!
谢谢大家 - 你的想法帮助我找到了解决方案。
我将 SSIS 与 WinSCP 结合使用来推送文件。一切似乎都很顺利,但我遇到了错误。看起来 SSIS 在某些时候出于某种原因将 "phantom space" 放入我的变量中。
变量是这样设置的:
"/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"
但是!!! Copying/pasting 这是命令行,而不是记事本++,但是,产量
/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".
请注意 "USER:" 和密码之间多了一个“ ” (space)。这是在破坏命令。另请注意,上传文件和上传位置之间有一个额外的 space (不过,这似乎没有任何不良影响)。如果我将整个内容复制到命令提示符下,然后将冒号后的 space 删除,它就可以工作...
这些幻影 space 来自哪里 and/or 我该如何摆脱它们?
我可以通过进入 Notepad++ 并使用“HEX Editor”插件查看隐藏字符来解决这个问题。
即使“显示所有字符”也没有显示隐藏字符...
我确定它们来自从格式化文本复制到变量中。真的很奇怪,在 一些 实例中,您可以 copy/paste 它们没有格式,而在其他情况下,隐藏字符会在那里。我通常使用记事本++作为删除格式的工具(中级copy/paste),但它并没有删除这些恶魔。
无论如何,一旦我在 HEX 编辑器中找到隐藏的字符,我就可以简单地从那里删除它们,切换回 ASCII 模式,复制字符串并将其粘贴回 SSIS 程序,然后从那里开始。问题已解决!
谢谢大家 - 你的想法帮助我找到了解决方案。