ssis - SSIS 中的 SFTP 文件传输

标签 ssis sftp sql-server-data-tools winscp

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

  • 我下载了 WinSCP
  • 在 WinSCP 中创建了已保存的连接 (TS_NEW)
  • 打开已保存的连接(以验证)
  • WinSCP.exeWinSCP.com 复制到 SSIS 项目文件夹
  • 使用以下脚本创建了文本文件。
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 中,我的执行流程任务编辑器有以下内容:

  • 可执行文件:C:\Users\zaccheut\Documents\Visual Studio 2012\Projects\Skynet Refreshes\Skynet Refreshes\WinSCP.com

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

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

最佳答案

您没有真正向我们解释出了什么问题(如果有的话)。

一般来说,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 session 中创建了 WinSCP 存储站点。默认情况下,WinSCP 将站点信息存储到 Windows 注册表的 HKCU 配置单元中。您的 SSIS session 无法访问该配置单元。

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

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 参数以启用 session 日志记录。这将对您的调试有很大帮助。生成的脚本(上面)也显示了这一点。

关于ssis - SSIS 中的 SFTP 文件传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52482021/

相关文章:

sql - SSIS 查找转换未捕获不匹配的值

c# - 如何使用 C# 和 .NET 使用 SFTP 连接与 key 文件

java - Apache commons sftp - 转到用户主目录上方

sql-server-data-tools - SSDT : Why can we need "Script (Build)"?

sql-server-2005 - 为什么我的 CASTS 在 SSIS 中似乎被忽略了?

sql - $xlnm Excel 工作表

sql-server - 如何删除保存在SQL Server上的SSIS包?

.net - 在PowerShell中使用WinSCP将整个驱动器上载到服务器,从而跳过所有无法读取的文件和文件夹

c# - 如何修复发现的不兼容的 SQL Server 版本?

c# - 恢复被 SQL Server Data Tools (Visual Studio) 删除的代码