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

e3bfsja2  于 2023-03-09  发布在  其他
关注(0)|答案(2)|浏览(372)

我在去年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用于输出。(这是复制到Export文件夹的模板
    • 还有一个Flat File Destination,以防出现任何错误
  • 然后使用另一个File System Task返回控制流,这个File System Task将文件从Export文件夹移动到共享驱动器上的最终目标

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

iqjalb3h

iqjalb3h1#

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

\ServerShare\IT\Reports\Export Templates\YoderReport.xlsx

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

\\ServerShare\IT\Reports\Export Templates\YoderReport.xlsx

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

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

同样基于此microsoft article,有两个可能的原因:
1.您必须具有读取指定文件中数据的权限才能查看其数据。若要更改权限分配,请与系统管理员或表或查询的创建者联系。
1.您试图以独占方式打开指定的文件,但另一个用户已经打开了该文件。

gmxoilav

gmxoilav2#

可能是访问问题。请确保代理服务帐户以网络共享路径的完全权限运行。也许您可以在代理服务器上使用凭据尝试。
此外,请确保Excel目标连接字符串支持. xlsx。

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

将“Excel 12.0“更改为“Excel 12.0 Xml“将告诉提供程序改为.xslx输出。

相关问题