FTP文件的SSIS脚本任务:在SSMS作业活动监视器和手动执行中执行时的不同行为

时间:2014-06-25 15:30:25

标签: sql sql-server vb.net ssis ftp

我在使用ftp传输文件的脚本任务执行ssis包时遇到问题。 在由SQL Server作业代理执行时,传输的文件具有零字节大小并且完全为空。当我在sql server 2012中的ssis目录中手动执行包时,它工作正常。还有SQL作业代理的帐户,它的工作原理。

Localy在我的Visual Studio 2012中,该软件包还将整个文件传输到ftp站点。

FTP的vb代码非常简单:

Dim cm As ConnectionManager = Dts.Connections.Add("FTP")
cm.Properties("ServerName").SetValue(cm, Dts.Variables("User::X_exporttargetserver").Value.ToString)
cm.Properties("ServerUserName").SetValue(cm, Dts.Variables("User::X_exportuser").Value.ToString)
cm.Properties("ServerPort").SetValue(cm, "21")
cm.Properties("ChunkSize").SetValue(cm, "1000")
cm.Properties("Retries").SetValue(cm, "1")
ftp.Connect()
 Dim files(0) As String
 files(0) = Dts.Variables("User::X_exportfilename").Value.ToString
 ftp.SendFiles(files, Dts.Variables("User::X_exporttargetfilename").Value.ToString, True, False)
ftp.Close()

有人知道这是脚本任务问题还是sql代理的问题?

2 个答案:

答案 0 :(得分:0)

通过将TimeOut值设置为

来试一试
cm.Properties("Timeout").SetValue(cm, "0") 'The 0 setting will make it not timeout

您可以启用日志记录,以便在sql代理执行作业时获得有关数据的更多信息。 只需使用Microsoft Network Monitor

检查FTP会话期间发生的情况

通过更改来尝试 - 在作业中创建步骤,选择以32位模式运行。

答案 1 :(得分:0)

我为我的问题找到了解决方案。在本地共享的UNC路径上,我为我的用户和sql作业代理设置了权限。

通过将ssis服务帐户的权限添加到此共享,该包正确执行。