" 421活动数据通道超时。"与来自SQL存储过程的Azure VM的FTP客户端连接

时间:2017-02-27 20:45:50

标签: azure ftp azure-virtual-machine sql-server-2016

我们正在从Windows服务器盒迁移到Azure上的虚拟机。我们的SQL存储过程使用Integration Services包生成feed文件并将它们上传到客户端ftp服务器。

我们通过在Windows上构建脚本文件并使用本机ftp.exe客户端来实现此目的。我的脚本文件如下所示:

open ftp.ourserver.net
myusername
mypassword123
lcd G:\
cd /
prompt
put "G:\DataFeeds\SmithCo_02272017.txt" "SmithCo_DailyFeed.txt"
bye

这在旧服务器上运行正常。当我使用命令提示符运行此代码时,我得到了:

  

421活动数据通道已超时。

我可以使用该机器上的WinSCP客户端通过基本连接手动上传文件。

我认为这是一个端口问题所以我在Windows防火墙中为端口21创建了一个出站规则,允许所有连接。

然后我在Azure中为端口21创建了一个端点。

是否还有另一个步骤可以打开它或者我可能遗失的东西?

1 个答案:

答案 0 :(得分:1)

Windows命令行ftp.exe仅支持FTP活动模式。在活动模式下,服务器必须连接回客户端以建立文件传输的数据连接。 ftp.exe以上的内容不允许您选择,用于数据连接的端口。它会随机选择1024以上的任何可用端口号。因此,您必须为1024以上的所有端口创建端点。这可能是您不想做的事情。虽然你可以试试。

WinSCP可以工作,因为它(因为大多数现代FTP客户端)默认使用被动模式。对于被动模式,您无需在客户端打开任何端口。

请阅读我关于network configuration for FTP active and passive connection modes的文章了解详情。

由于WinSCP适合您,您可以使用WinSCP scripting interface替换ftp.exe脚本。

就像(ftp.txt):

open ftp://myusername:mypassword123@ftp.ourserver.net/
lcd G:\
cd /
put "G:\DataFeeds\SmithCo_02272017.txt" "SmithCo_DailyFeed.txt"
exit

(尽管lcd在您的和WinSCP脚本中都是多余的。)

运行脚本如:

winscp.com /script=ftp.txt

请参阅converting Windows FTP script to WinSCP script指南。

(我是WinSCP的作者)