【问题标题】:Error message when an SSIS package runs that is scheduled to run as a SQL Server Agent job: "An OLE DB error has occurred. Error code: 0x80004005"当计划作为 SQL Server 代理作业运行的 SSIS 包运行时出现错误消息:“发生 OLE DB 错误。错误代码:0x80004005”
【发布时间】:2021-12-22 01:36:39
【问题描述】:

对于我的每个数据流任务,我在 SSIS 中收到以下错误“发生 OLE DB 错误。错误代码:0x80004005”。

当我将所有数据流任务的“延迟验证”设置为“真”并执行我的包时,集成工作正常。

但是 SQL 代理作业没有运行。

据我所知,这是因为我设置了“to_update”临时表来充当中间人。下面的微软文章似乎支持了这一点。

https://support.microsoft.com/en-us/topic/error-message-when-an-ssis-package-runs-that-is-scheduled-to-run-as-a-sql-server-agent-job-an-ole-db-error-has-occurred-error-code-0x80004005-6a687a1f-917a-d3ae-4d3a-44e7dae82988

正如文章所说,我的下一步是“更改 SQL Server 代理服务启动帐户的 Temp 目录的权限。授予此目录的 SQL Server 2005 代理代理帐户的读取权限和写入权限。但是老实说,我不知道我会在哪里做这个(我是 SSIS 世界的新手!)

如果有人能指出我正确的方向,那将不胜感激。

【问题讨论】:

    标签: ssis oledb


    【解决方案1】:

    有一些事情需要考虑,延迟验证可能是一个红鲱鱼,与错误无关,或者可能是代理正在调用不延迟验证的旧版本的包。因此,首先要确保正确部署了带有延迟验证的包,并且它是由 SQL 代理运行的包。

    然后,如果问题仍然存在,则可能是权限或 Temp 目录空间不足,值得检查。

    最后,如果涉及权限问题,那么负责维护数据库的人,我假设有一个 DBA,应该检查哪个帐户正在从 SQL 代理运行包,并确保它具有正确的权限。

    另一件事要检查:

    确保运行方式正确,如果不是以 32 位方式运行,请尝试,反之亦然。

    【讨论】:

    • 感谢您的帮助。我已经尝试了以上所有方法,但 SQL 代理作业仍未运行。很奇怪,因为它们运行 C 语言包,但不是 SSIS。
    • 要检查的另一件事是在 SQL 代理作业的配置选项卡中。我更新了答案。
    • 感谢您的检查。我已经尝试过勾选和不勾选 32 位,但它仍然没有完成运行。它开始运行,并执行但未完成作业。以前我的前任发帖时只花了几分钟,但是因为他们离开了 SSIS 包,所以它不起作用。我想知道他们是否有我没有的权限,但是我已经为自己提供了数据库所有者等的访问权限。
    • 包是否如上图那样作为SQL Server代理服务账户运行?
    • 太好了,谢谢。在花了更多时间之后,看起来问题实际上与磁盘空间有关,我使用的服务器上的内存以 100% 的速度运行,SQL 代理作业正在运行,但速度非常慢,实际上从未成功运行。我结束了几个进程,并在每个 SQL 作业运行时交错,因此它们不会一次全部触发,并且它们再次成功运行。这绝对不是我最初认为的问题。非常感谢您的帮助!
    【解决方案2】:

    花了一些时间之后,看起来问题实际上与磁盘空间有关,我正在使用的服务器上的内存以 100% 的速度运行,SQL 代理作业正在运行,但速度很慢,实际上从未成功运行过。我结束了几个进程并在每个 SQL 作业运行时交错运行,因此它们不会同时触发,并且它们再次成功运行。

    【讨论】:

      猜你喜欢
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      相关资源
      最近更新 更多