我已经创建了一个SSIS包,用于从FTP服务器下载文件。 当我调试包时,一切都很顺利。但是,当我将程序包作为Job步骤进行处理时,它有时无法连接。 该作业每4小时重复一次,平均每次运行失败,错误: 0xC002918F - 登录请求被拒绝。
该连接是匿名的,不需要密码
我已经测试了几个小时了,发现了一些信息:
我无法查看FTP服务器的设置。 最让我困惑的是,一些已经完成的任务工作得很好而有些失败了。我没有发现任何规律性。
到目前为止我尝试了什么:
到目前为止没有运气。还有一些尝试成功,有些则没有。
修改
FTP服务器位于Simatic设备上。
本周,我每隔1小时保持一次,并且每隔30秒不断对设备进行一次ping操作。仍然有一些SSID尝试没有成功,每次都会ping通: - /
答案 0 :(得分:4)
我将用执行进程任务替换标准SSIS FTP任务,并调用WinSCP。
https://winscp.net/eng/docs/guide_automation
我发现WinSCP更加可靠和灵活。您可以传递一个使用表达式构建的命令行来覆盖SSIS FTP任务的所有功能,等等。
答案 1 :(得分:3)
我认为您必须接受在此方案中仅使用解决方法,可能将SQL代理SSIS作业步骤设置为在X秒延迟后重试(SQL作业步骤的高级选项卡)。当我们使用SSIS连接到片状云API时,我们会做很多事情。
或者你的包裹中的for循环容器可能会继续失败&突破成功 - 也许尝试3次连接?
很抱歉,如果这一点已经很明显了。
答案 2 :(得分:2)
以前的错误被称为:
' 0xC002918F', - 1073573489,' DTS_E_FTPTASK_UNABLETOCONNECTTOSERVER','无法使用" __"连接到FTP服务器。'
FTP任务在操作执行结束时显式关闭连接,因此如果连接保持打开状态,则必须与服务器有关。
CozyRock和PragmaticWorks都为SSIS提供了出色的FTP任务。
Microsoft网站上列出的指南
https://support.microsoft.com/en-us/kb/925880
https://technet.microsoft.com/en-us/library/bb794745.aspx
除了防火墙/权限/限制之外,请检查FTP凭据或确切地保存/检索它们。在这种情况下的经验法则是依赖SQL Server,即使用"依靠服务器存储和角色进行访问控制"包保护级别。这种方法应该完全删除所有FTP凭据问题(当然不包括mistypos)。
时应用的默认设置上述海报建议,请勿使用XP_CMDSHELL并在没有业务需要的情况下调用外部程序。启用CMDSHELL是一个重大的安全风险。
答案 3 :(得分:1)
根据我的经验,即使在结束包执行后,有时FILE LOCK
和DB CONNECTION
也不会终止。
我建议您使用Script Task
并使用C#代码进行上传,并确保在最后关闭FTP连接。
答案 4 :(得分:0)