首页 > 解决方案 > 使用 SQL Server 代理作业的 WinSCP 批量传输

问题描述

我有一个 .bat 文件:

执行 WinSCP(调用脚本 txt)并通过 SFTP 传输文件。它还归档传输的文件。

我的问题是当我双击 .bat 文件时它工作得很好。但是当我在 SQL Server 代理作业中执行它时,它会归档文件但不会将文件传输到 SFTP。

我在这份工作的历史上完全没有错误。

我觉得它没有执行 WinSCP 或没有打开 txt 脚本。我检查了权限,它在所有文件和文件夹中都显示正常...

选中所有用户对所有文件和相关文件夹的完全控制。尝试检查我的语法。

"C:\Program Files\WinSCP\WinSCP.exe" /command "option confirm off" 
/console /script="C:\Program Files\WinSCP\LocalToRemote.txt"

标签: batch-filessmswinscpsql-server-agent

解决方案


您应该将/log=C:\path\to\winscp.log开关添加到 WinSCP 命令行以查看发生了什么。

在极少数情况下,错误非常严重,甚至没有生成日志文件,您应该捕获 WinSCP 控制台输出。你不能这样做winscp.exe,你需要这样做,winscp.com无论如何你都应该使用它。

"C:\Program Files\WinSCP\WinSCP.com" ^
    /log=C:\path\to\winscp.log ^
    /command "option confirm off" ^
    /script="C:\Program Files\WinSCP\LocalToRemote.txt" > C:\path\to\winscp.out

在您向我们展示日志之前,我只能将您指向 WinSCP 常见问题解答:
我的脚本在手动执行时工作正常,但在由 Windows 调度程序、SSIS 或其他自动化服务运行时失败或挂起。我究竟做错了什么?

最常见的问题是FAQ中列出的第一个问题:

  • 脚本失败(或“挂起”),因为服务帐户不知道主机密钥(SFTP 或 SCP)或证书(FTPS、WebDAVS),并且 WinSCP 验证失败(或要求)。

最好的办法是让 WinSCP GUI为您生成脚本/命令行/批处理文件模板,其中包含脚本真正可移植所需的所有详细信息。


推荐阅读