我在去年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
尝试复制文件之前释放文件?但如果是这样,为什么现在才开始发生这种情况?
2条答案
按热度按时间iqjalb3h1#
我认为文件路径中存在问题,因为您可以看到文件路径以一个反斜杠开头:
如果它在网络上,可能应该以双反斜杠
\\
开头或者分区丢失--〉路径不完整
检查向连接管理器提供文件路径的方式 (如果使用表达式)
同样基于此microsoft article,有两个可能的原因:
1.您必须具有读取指定文件中数据的权限才能查看其数据。若要更改权限分配,请与系统管理员或表或查询的创建者联系。
1.您试图以独占方式打开指定的文件,但另一个用户已经打开了该文件。
gmxoilav2#
可能是访问问题。请确保代理服务帐户以网络共享路径的完全权限运行。也许您可以在代理服务器上使用凭据尝试。
此外,请确保Excel目标连接字符串支持. xlsx。
将“
Excel 12.0
“更改为“Excel 12.0 Xml
“将告诉提供程序改为.xslx输出。