如何在SSIS包中使用WinSCP for SFTP时修复退出代码问题?

时间:2013-02-06 11:25:22

标签: ssis winscp

我正在使用SSIS 2005使用WinSCP执行一些SFTP任务。我用Google搜索了错误,但无法使其正常工作。我收到了这个错误:

  

[执行进程任务]错误:在执行“C:\ Program Files \ WinSCP \ WinSCP.exe”中“-script = C:\ Documents and Settings \ nian_z \ Desktop \ temp \ SSISMovingSOA \ removeSOA8.txt”at“ C:\ Program Files \ WinSCP“,进程退出代码为”1“,而预期为”0“。

这是我使用的WinSCP脚本:

option batch abort
option confirm off
#open sftp://user:password@server:22
#cd /m/vo/Cont/fileftp
get OrderOutbound*
close
exit

对于上面的脚本,我甚至尝试一次只留下一个语句,但仍然有错误。

以下是执行流程任务的设置。

Execute Process Task

3 个答案:

答案 0 :(得分:5)

这是的答案,但是试图帮助您找到问题的解决方案。

试试这个:

尝试以下步骤以确定您的脚本是否实际在SSIS之外工作。

  • 点击 Windows Start ,然后点击 Run...
  • 键入 cmd 以打开命令提示符
  • 在命令提示符窗口中,在提示符处键入以下命令以切换到WinSCP安装目录。我在以下目录中安装了WinSCP。根据您的环境设置更改路径。
  

cd“C:\ Program Files(x86)\ WinSCP”

  • 如果您的WinSCP脚本文件removeSOA8.txt位于带有空格的路径C:\Documents and Settings\userid\Desktop\temp\SSISMovingSOA\中,请键入以下命令,将脚本路径用双引号括起来运行脚本,并使用 /log 选项,用于捕获所有状态消息。
  

WinSCP.exe“/ script = C:\ Documents and Settings \ userid \ Desktop \ temp \ SSISMovingSOA \ removeSOA8.txt”/log=C:\temp\WinSCP_log.txt

脚本执行后,您会发现将在路径 WinSCP_log.txt 中创建名为 C:\temp 的日志文件。通读文件以确定是否有任何错误消息。

尝试在SSIS中运行FTP:

我尝试使用WinSCP从FTP下载文件,其中包含以下脚本:

option batch abort
option confirm off
open ftp://myuserid:mypassword@ftp.myftpsite.com:21 -passive=on
cd /root/somefolder/
option transfer binary
get SomeFileOnFTP.txt c:\temp\
close
exit

以下是我在SSIS包中配置Execute Process Task的设置。

Execute Process Task

该过程在BIDS中成功运行。

Execution

希望能给你一个想法。

答案 1 :(得分:1)

如果从SQL Server作业代理运行该脚本,那么大多数情况下您将收到此退出错误。

场景:在我的情况下,当我尝试从sFTP服务器下载文件时,我遇到了。

解决方案:

第1步 - 创建批处理文件 @echo off

CD" C:\ Program Files(x86)\ WinSCP"

winscp.com / ini = nul /script=C:\path\download_script_pm.txt

退出

注意:使用SQL Server Job代理进行调用时,请确保将“ini”配置为NULL,否则会抛出此错误

Step2 - 创建一个txt文件(winscp脚本)

选项回显

选项批次

选项确认关闭

open sftp:// user:password@sftp.xxxx.com/ -hostkey =" ssh-edXXXX-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx -xx-XX-XX-XX-XX"

选项确认关闭

get -filemask =" > = 1D" /sftp_Path/File_Name_.csv  C:\ local_path_for_downloaded_file \"

出口

注意:确保使用hostkey。要获取主机密钥,您需要执行以下操作: 1.打开winscp app工具并登录服务器

  1. 点击会话 - >生成会话/ URL代码选项

  2. 检查SSH主机密钥并复制指纹值并在winscp hostkey值中使用

答案 2 :(得分:-1)

之前我遇到了同样的错误,但现在对我来说工作正常。

SSIS 执行流程任务:

可执行文件 - C:\SSIS\SSIS_2008_Projects\HRIS_RepomanFusion_Load\WinSCP\WinSCP.com

参数 - "/script=wscpBatchTest.txt" /log=C:\SSIS\SSIS_2008_Projects\FTP_Load\WinSCP\WinSCP_log.txt

工作目录 - C:\SSIS\SSIS_2008_Projects\HRIS_RepomanFusion_Load\WinSCP

enter image description here

这是我使用的 WinSCP 脚本:wscpBatchTest.txt

option batch
option confirm off
open sftp://username:password@ftp.test.com
option transfer binary
cd /home/SAFAA
get employeedetails.csv C:\SSIS\SSIS_2008_Projects\SAFAA\InputDirectory\
close
exit