去年 12 月我让这个 SSIS 包开始工作。它只在周五早上运行。上周五失败并出现以下错误消息:
包:错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。来源:“Microsoft Access 数据库引擎” Hresult:0x80004005 描述:“Microsoft Access 数据库引擎无法打开或写入文件 '\ServerShare\IT\Reports\Export Templates\YoderReport.xlsx'。该文件已被其他用户以独占方式打开,或者您需要权限才能查看和写入其数据。”。
我检查了其他几个类似的问题,但他们没有回答我的问题。我已经检查过以确保没有人打开该文件。
有问题的文件是一个复制然后填充的模板,所以一开始就没有人应该打开它。
我尝试将
RetainSameConnection
更改为True
,但没有区别。我已经在调试模式下运行它,并且工作正常。
有人知道如何清除它以便它再次自动运行吗?
更新
经过更多测试,该文件似乎正在获取数据,但没有被复制。这是我的设置:
File System Task
可以从我的模板中复制模板
文件夹到我的导出文件夹。Data Flow Task
Data Conversion
将几个字段更新为正确的格式Excel Destination
用于输出。 (这是复制到导出文件夹的模板Flat File Destination
以防万一有任何错误File System Task
返回控制流,此操作将文件从导出文件夹移动到共享驱动器上的最终目的地当我从 VS 2015 运行它时,它工作正常并创建文件。当我从 SQL 代理作业运行此命令时,它失败并显示上述错误消息。我唯一能想到的是,在
Data Flow Task
中,在最后一个 Excel Destination
尝试复制文件之前,File System Task
不会释放文件?但如果是这样的话,为什么现在才开始发生呢?
我认为文件路径有问题,因为您可以看到文件路径以一个反斜杠开头:
\ServerShare\IT\Reports\Export Templates\YoderReport.xlsx
也许它应该以双反斜杠开头
\\
如果它在网络上
\\ServerShare\IT\Reports\Export Templates\YoderReport.xlsx
或者分区丢失 --> 路径不完整
检查向连接管理器提供文件路径的方式(如果您使用表达式)
还根据这篇微软文章,有两个可能的原因:
看起来像是访问问题。确保代理服务帐户正在以网络共享路径的完全权限运行。也许您可以尝试在代理服务器上使用您的凭据。
此外,请确保您的 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 格式输出。