【发布时间】:2021-10-22 18:26:29
【问题描述】:
我有一个 SSIS 包,它应该读取一个文件夹,如果该文件夹包含任何文本文件,它将读取它们并将数据存储到数据库中。该软件包可以从文件系统完美运行,但是当我部署它时它失败了。 该包使用一个保持一致的项目级变量,该变量充当文件夹路径,以查看要在哪个文件夹中查找文件。
SQL Server 代理给我这个错误: 查看执行报告后,如果我通过 SQL Server 代理使用服务帐户执行它,我会看到以下错误消息: "文件名属性无效。文件名是设备或包含无效字符"
“连接中指定的文件名'(此处的路径)'无效”
“平面文件连接管理器验证失败” 但是,如果我自己通过直接右键单击目录中的包并执行来运行它,执行报告将返回成功,但它会包含一条警告,上面写着:“从文件输入文件夹中读取文件警告:对于每个文件枚举器为空。For Each File 枚举器未找到任何与文件模式匹配的文件,或者指定的目录为空"
我怀疑这是权限错误,但我没有对 Microsoft SQL Server 中的权限进行过多处理,而且我使用的服务帐户不是由我创建的。我尝试将包和项目的安全性从默认的“使用用户密钥加密敏感数据”更改为“不保存敏感数据”,重新构建和重新部署,但这根本没有帮助。 这很可能是权限错误,但我一直对如何处理感到困惑。非常感谢任何帮助!
【问题讨论】:
-
您是否在任务和连接管理器上将 SSIS 属性 DelayValidation 设置为 true?试试看。
-
@GabrielVa 我已在控制流中的所有任务上将 DelayValidation 设置为 true,并且在使用 SQL 代理执行时我设法消除了 2 个错误。请参阅问题的更新尾端。
标签: sql-server deployment ssis ssms sql-server-agent