SSIS 查找 Excel 文件导致导出到 excel 目标失败

SSIS Lookup to Excel file causes export to excel destination to fail

我有一个 SSIS 程序包,除了一个部分外,所有内容都经过测试并且工作正常。当我尝试将数据导出到以前在查找函数中使用的 Excel 文件时,它 returns 出现此错误:

[Excel 目标 1 [3340]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E09。

我试过复制文件,然后将数据导出到副本,它工作正常 - 只有在导出到查找中使用的同一文件时才会失败。我有一种感觉,Lookup 函数使用了我为它创建的 OLE DB 连接并将其保持打开状态,因此当 Excel 连接管理器尝试访问要写入的文件时,它会被拒绝。

我已经尝试将与 Excel 文件的 OLE DB 连接更改为只读,并在查找时使用完整缓存而不使用缓存,但是 none 这有帮助.感谢任何建议。

我相信您的假设是正确的,SSIS 在 Excel 文件打开时对其进行独占锁定并且不与自身共享该锁定。快速返工是添加第二个 SSIS 包。这一个使用所有 Excel 数据填充缓存连接管理器。将缓存文件持久化到磁盘

然后在您现有的 SSIS 包中,将查找更改为使用缓存文件而不是直接 Excel。现在唯一锁定的应该是 Excel 目的地。

然后您需要创建调用模式

  1. 运行新缓存包
  2. 运行正常包