我在SSIS中创建了一个执行进程任务,用于将文件上传到sftp服务器。我可以完全访问服务器文件夹,并能够使用filezilla拖放文件。我使用putty sftp客户端psftp.exe来上传。现在当我使用带有用户和传递和批处理参数的psftp.exe时,它在windows cmd中运行得非常好。但是当我在SSIS中执行相同的操作时,我收到以下错误:
Error: 0xC0029151 at Execute Process Task, Execute Process Task: In Executing "C:\temp\psftp.exe" "user -pw pass -be -batch -b Upload.bat" at "C:\temp", The process exit code was "1" while the expected was "0".
Task failed: Execute Process Task
我的windows cmd参数是:
psftp.exe devsftp@secftp2.alliedpilots.org -b UploadUsersToSftp.bat
然后它要求输入密码,输入密码后,文件上传成功完成。但我在通过SSIS执行相同操作时遇到了麻烦。下面是SSIS流程任务参数截图:
我在网上搜索并在here找到了一些类似的问题但没有具体的psftp。还在stackoverflow here上找到了相同的问题,但提到的解决方案是权限,我已经检查过了。
任何帮助将不胜感激。
答案 0 :(得分:1)
SSIS最有可能在与您在“Windows cmd”中使用的帐户不同的本地帐户下运行。
SFTP访问需要确认主机密钥。您可能过去在本地帐户中验证了主机密钥,因此它已缓存在Windows注册表中。
但是运行SSIS的帐户没有缓存主机密钥。所以它必须失败。
您应该使用预期主机密钥的指纹添加-hostkey
切换到psftp.exe
命令行。
如果这没有帮助,请将psftp.exe
打包到批处理文件并将其输出重定向到文件。
psftp.exe devsftp@secftp2.alliedpilots.org -b UploadUsersToSftp.bat > c:\temp\psftp.out 2>&1
在SSIS中运行批处理文件,而不是直接运行psftp.exe
。
然后检查文件是否有错误。