包执行成功,SQL Agent 成功执行作业,但文件未加载到数据库并正在传输

问题描述 投票:0回答:1

我在 SSIS 中有一个包,可以将 3 个 excel 文件加载到表中: 加载完成后,我使用一个表来跟踪加载时间+加载的数据量,之后我通过 FileTaskSystem 和 ForEach Container 传输文件。 这是我的包裹:

当我在 SSIS 中执行它时,它工作得很好,这是传输表中的输出:

此外,文件被传输到目的地。

当我通过 SQL 代理在 SSMS 中执行该包时,它可以工作,但不会加载 mrrMashbir3 和 mrrMega 表内的数据。 唯一有效的是 RetailerContainer,它不在 ForeachLoop 内

如您所见,Foreach 中的所有操作都不起作用(文件传输也不起作用)。

sql sql-server foreach ssis sql-agent-job
1个回答
0
投票

当 Foreach 文件枚举器无法列出文件夹的内容时,将引发信息事件。不是错误,只是一个简单的“我在这里没有找到任何文件”

由于该进程在“您”运行时有效,但在“SQL 代理”帐户运行时无效,最可能的问题是该帐户没有该路径的权限。该路径不存在的可能性较小 - 即开发使用映射驱动器 D:,它实际上是您的帐户自动映射的 \server\share\data,但代理帐户不会。

解决方案将取决于根本原因,但可能采用以下形式之一

  • 在 SQL Server 中创建一个有凭据的用户,为 SSIS 子系统的凭据分配权限,然后更新作业步骤以使用该有凭据的用户
  • 识别 SQL 代理帐户的用户并将 ACL/文件系统权限分配给包含源数据的文件夹
  • 将前体/后继批处理脚本添加到代理作业以映射和取消映射网络位置
  • 添加/更新 SSIS 包的配置以使用 UNC 路径与映射驱动器

检查您的 SSIS 日志中的信息事件,您可能会看到

Mashbir Foreach
中的一个,如果上述选项无法解决问题,请使用具体详细信息编辑您的问题(运行包的帐户,其中 foreach 枚举器被指出,等等),然后评论这个答案,我会回来查看。

© www.soinside.com 2019 - 2024. All rights reserved.