SSIS 中的 SFTP 文件传输

SFTP file transfer in SSIS

我已经阅读了一大堆不同的论坛,但似乎无法让我的工作。我需要使用 SSIS 将文件从本地计算机传输到 SFTP 服务器。这是我已经完成的工作:

option batch on
option confirm off
open sftp://TS_NEW.com
cd C:\Users\zaccheut\Documents\Analytics Project 2018\ThoughtSpot\SSIS File
option transfer binary
put FCT_DC_MONTH.csv  /export/xvdb1/skynet/File_Test
exit

在 SSIS 中我的执行进程任务编辑器有这个:

如何在命令行中测试它,我做错了什么?

你没有真正向我们解释哪里出了问题(如果有的话)。

一般来说,类似这样的问题在 WinSCP FAQ 中都有涉及 My script works fine when executed manually, but fails or hangs when run by Windows Scheduler, SSIS or other automation service. What am I doing wrong?

另请参阅 WinSCP 文章 SFTP Task for SSIS/SSDT

不过,更具体地说,存在以下三个明确的问题。


您已经在交互式 Windows 会话中创建了一个 WinSCP 存储站点。默认情况下,WinSCP 将站点信息存储到 Windows 注册表的 HKCU 配置单元中。您的 SSIS 会话无权访问该配置单元。

理想情况下,您应该创建一个不依赖于存储配置的独立脚本。这特别意味着您的 open command 应该包含凭据和主机密钥指纹,例如:

open sftp://username:password@TS_NEW.com -hostkey=...

WinSCP GUI can generate such script给你。


另一个问题是您的 cd 命令实际上应该是 lcd 并且路径必须用引号括起来,因为它包含空格。

lcd "C:\Users\zaccheut\Documents\Analytics Project 2018\ThoughtSpot\SSIS File"

同样,WinSCP 参数中的脚本路径必须用引号引起来,因为它包含空格:

/script="C:\Users\zaccheut\Documents\Visual Studio 2012\Projects\Skynet Refreshes\Skynet Refreshes\local2remote.txt"

您还应该将 /log switch 添加到 WinSCP 参数以启用会话日志记录。这将对您进行调试有很大帮助。生成的脚本(上方)也显示了这一点。