我在 SSIS 中有一个包,可以将 3 个 excel 文件加载到表中: 加载完成后,我使用一个表来跟踪加载时间+加载的数据量,之后我通过 FileTaskSystem 和 ForEach Container 传输文件。 这是我的包裹:
当我在 SSIS 中执行它时,它工作得很好,这是传输表中的输出:
此外,文件被传输到目的地。
当我通过 SQL 代理在 SSMS 中执行该包时,它可以工作,但不会加载 mrrMashbir3 和 mrrMega 表内的数据。 唯一有效的是 RetailerContainer,它不在 ForeachLoop 内
如您所见,Foreach 中的所有操作都不起作用(文件传输也不起作用)。
当 Foreach 文件枚举器无法列出文件夹的内容时,将引发信息事件。不是错误,只是一个简单的“我在这里没有找到任何文件”
由于该进程在“您”运行时有效,但在“SQL 代理”帐户运行时无效,最可能的问题是该帐户没有该路径的权限。该路径不存在的可能性较小 - 即开发使用映射驱动器 D:,它实际上是您的帐户自动映射的 \server\share\data,但代理帐户不会。
解决方案将取决于根本原因,但可能采用以下形式之一
检查您的 SSIS 日志中的信息事件,您可能会看到
Mashbir Foreach
中的一个,如果上述选项无法解决问题,请使用具体详细信息编辑您的问题(运行包的帐户,其中 foreach 枚举器被指出,等等),然后评论这个答案,我会回来查看。