我有一个SSIS包,除了一个部分外,都经过测试并且工作正常。当我尝试将数据导出到以前在Lookup函数中使用的Excel文件时,它会返回以下错误:
[Excel目标1 [3340]]错误:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80040E09。
我尝试过复制文件,然后将数据导出到副本中并且工作正常 - 只有在导出到查找中使用的同一文件时才会失败。我有一种感觉,Lookup函数使用我为它创建的OLE DB连接并使其保持打开状态,这样当Excel连接管理器尝试访问要在其上写入的文件时,它将被拒绝。
我尝试将Excel文件的OLE DB连接更改为只读,并在Lookup上使用完整缓存和缓存,但这些都没有帮助。感谢任何建议。
答案 0 :(得分:0)
我相信你的假设是正确的,SSIS在打开时对Excel文件进行独占锁定,并且不与自己共享锁定。快速返工将添加第二个SSIS包。这个使用所有Excel数据填充缓存连接管理器。将缓存文件保留到磁盘
然后在现有的SSIS包中,将Lookup更改为直接使用缓存文件而不是Excel。现在唯一的锁定应该是Excel目标。
然后,您需要制作调用模式