【问题标题】:Deployed SSIS package will not read a file部署的 SSIS 包不会读取文件
【发布时间】:2021-10-22 18:26:29
【问题描述】:

我有一个 SSIS 包,它应该读取一个文件夹,如果该文件夹包含任何文本文件,它将读取它们并将数据存储到数据库中。该软件包可以从文件系统完美运行,但是当我部署它时它失败了。 该包使用一个保持一致的项目级变量,该变量充当文件夹路径,以查看要在哪个文件夹中查找文件。

SQL Server 代理给我这个错误: 查看执行报告后,如果我通过 SQL Server 代理使用服务帐户执行它,我会看到以下错误消息: "文件名属性无效。文件名是设备或包含无效字符"

“连接中指定的文件名'(此处的路径)'无效”

“平面文件连接管理器验证失败” 但是,如果我自己通过直接右键单击目录中的包并执行来运行它,执行报告将返回成功,但它会包含一条警告,上面写着:“从文件输入文件夹中读取文件警告:对于每个文件枚举器为空。For Each File 枚举器未找到任何与文件模式匹配的文件,或者指定的目录为空"

我怀疑这是权限错误,但我没有对 Microsoft SQL Server 中的权限进行过多处理,而且我使用的服务帐户不是由我创建的。我尝试将包和项目的安全性从默认的“使用用户密钥加密敏感数据”更改为“不保存敏感数据”,重新构建和重新部署,但这根本没有帮助。 这很可能是权限错误,但我一直对如何处理感到困惑。非常感谢任何帮助!

编辑:在控制流中的任务上设置“延迟验证”并使用 SQL Server 代理执行包后,现在返回的错误少了 2 个

【问题讨论】:

  • 您是否在任务和连接管理器上将 SSIS 属性 DelayValidation 设置为 true?试试看。
  • @GabrielVa 我已在控制流中的所有任务上将 DelayValidation 设置为 true,并且在使用 SQL 代理执行时我设法消除了 2 个错误。请参阅问题的更新尾端。

标签: sql-server deployment ssis ssms sql-server-agent


【解决方案1】:

为了使文件系统任务工作,执行帐户需要对相关文件夹的权限。当您通过 SQL-agent 执行包时,包在运行 SQL-agent 帐户的帐户下执行,当您右键单击包并按执行时,包将作为您的帐户执行。

一个问题可能是 SQL 代理帐户没有对该文件夹的权限,并且无法枚举内容。您可以通过将 SQL-server 帐户临时更改为您自己的帐户并再次运行作业来验证这一点:

  • 打开 Sql Server 配置管理器
  • SQL Server Services下双击SQL Server Aggent
  • 将帐户更改为您自己的帐户
  • 重启服务

如果这样可以解决问题,请切换回 SQL 服务器帐户并检查您尝试枚举的文件夹的文件夹权限。添加包含该帐户的 SQL 代理帐户或组以具有读取文件夹的权限。显然你也可以只检查文件夹的权限,并确保执行帐户有权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    相关资源
    最近更新 更多