SSIS 包停止工作,错误代码:0x80004005



去年12月,我得到了这个SSIS包的工作。它只在周五早上运行。上周五它失败了,并显示以下错误消息:

包:错误:SSIS 错误代码DTS_E_OLEDBERROR。 发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。 源:"Microsoft Access 数据库引擎" 结果: 0x80004005 说明:"Microsoft Access 数据库引擎无法打开或写入文件'\\ServerShare\IT\Reports\Export Templates\YoderReport.xlsx'。它已经由其他用户专门打开,或者您需要权限才能查看和写入其数据。

我查看了其他几个类似的问题,但它们没有回答我的问题。我已经检查以确保没有人打开该文件。

有问题的文件是一个模板,被复制然后填充,所以没有人应该打开它,首先。

我尝试将RetainSameConnection更改为True,但没有区别。我已经在调试模式下运行了它,它工作正常。

有人知道如何清除它以便它再次自动运行吗?

更新

经过一些进一步的测试,文件似乎正在获取数据,但没有被复制。这是我的设置:

  • 我有一个从我的模板复制模板的File System Task文件夹到我的导出文件夹。
  • 然后我有一个Data Flow Task
    • 从运行 SQL 脚本以拉取数据的 OLE DB 源开始
    • 运行Data Conversion以将几个字段更新为正确的格式
    • Excel Destination用于输出。(这是复制到"导出"文件夹的模板
    • 还有一个Flat File Destination以防万一有任何错误
  • 然后使用另一个File System Task返回控制流,这将文件从导出文件夹移动到共享驱动器上的最终目标

当我从VS 2015运行它时,它工作正常并创建文件。当我从 SQL 代理作业运行它时,它失败并显示上述错误消息。我唯一能想到的是,在Data Flow TaskExcel Destination没有在最终File System Task尝试复制文件之前释放文件?但如果是这样的话,为什么现在才开始发生呢?

我认为文件路径中存在问题,因为您可以看到文件路径以一个反斜杠开头:

ServerShareITReportsExport TemplatesYoderReport.xlsx

如果它在网络上,也许它应该以双反斜杠\开头

\ServerShareITReportsExport TemplatesYoderReport.xlsx

或者分区丢失 --> 不完整的路径

检查向连接管理器提供文件路径的方式(如果使用表达式)


同样基于这篇微软文章,有两个可能的原因:

  1. 您必须具有读取指定文件中的数据的权限才能查看其数据。若要更改权限分配,请与系统管理员或表或查询的创建者联系。
  2. 您尝试以独占方式打开指示的文件,但另一个用户已打开该文件。

看起来像一个访问问题。确保代理服务帐户以对网络共享路径的完全权限运行。也许您可以在代理服务器上尝试使用您的凭据。

此外,请确保 Excel 目标连接字符串支持 .xlsx。

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:pathxxx.xlsb;Extended Properties="Excel 12.0;HDR=YES";

将"Excel 12.0"更改为"Excel 12.0 Xml"将告诉提供者以.xslx格式输出。

相关内容

最新更新