更改Excel连接字符串后SSIS失败 - DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER

时间:2017-12-15 10:10:16

标签: sql-server excel ssis etl sql-server-data-tools

我设计了一个带有SSDT的ETL包,可将12张Excel表格导入我的目标数据库。 Excel表是来自另一个系统的报告,在我的案例中是Iteraplan。每个Excel报告都是系统的快照。这些报告中的每一个都有细微的变化,但我仍然只为Excel报告定义了一个连接字符串,因为将来会有更多的报告,我希望与源的连接是参数化的,以便在在部署包后,用户可以选择源和包导入数据独立于我。

我的ETL包的结构是一个ParentPackage,其中包含超过20个执行包任务,其中调用了另一个子包。由于我仍在设计,因为并非所有报告都具有完全相同的模式,因此当我更改Excel连接字符串并引用另一个Excel报告时,“执行包任务”中的某些包会失败。

没有驱动程序问题,因为我已安装ACE 32位,Run64BitRunTime为False(我也尝试过True,但仍然是相同的行为),DelayValidation为True,我的原始包是根据9月报告设计的,运作良好。唯一的问题是,每当我更改Excel连接字符串时,某些子包的随机失败都会出现以下错误之一:

  

DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER   错误:父包中的0xC0202009:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。   OLE DB记录可用。来源:“Microsoft Access数据库引擎”Hresult:0x80004005描述:“Microsoft Access数据库引擎无法打开或写入文件'。它已由其他用户独占打开,或者您需要获得查看和写入其数据的权限。” 。   错误:0xC00291EC从静态但参数化连接获取报告日期,执行SQL任务:无法获取连接“静态Excel连接”。可能未正确配置连接,或者您可能没有此连接的正确权限。

更改连接并重建项目后,我再次收到相同的错误,但有时会出现不同的子包。目前,为了解决这个问题,我必须关闭SSDT,复制excel报告,删除它,粘贴它,再次打开项目,重建它然后执行它。我不明白为什么它会这样做,但我确信应该有一种方法可以让它表现得正常。如果有人和我分享他们的想法,我将非常感激。

0 个答案:

没有答案