【问题标题】:Excel Connection String in SSISSSIS中的Excel连接字符串
【发布时间】:2019-02-27 12:04:30
【问题描述】:

我整个上午都在看这个,我在绕圈子。

我正在设置一个 SSIS 包来导入文件夹中的所有 Excel 时间表,我开始时只有一个文件,但是为了简单起见,我只添加了一个数据流任务,我会回来添加循环稍后。

我创建了一个到 Excel 文件的连接并使用此连接添加了 Excel 源。另外值得注意的是,标题可能会发生变化,因此取消选择“第一行有列名”框。

然后我添加了一个 OLE DB 目标,并且所有列都匹配。然后我还在所有这些之前添加了一个 SQL 任务来截断目标表。

这一切都很好,但是我随后创建了一个名为 ExcelFile 的字符串变量,其值为C:\Data\Timesheets\TS1.xlsx

Excel 连接管理器的连接字符串是

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Data\Timesheets\TS1.xlsx;Extended Properties="Excel 12.0 XML;HDR=NO"; 

而我要做的就是添加 ExcelFile 变量来替换源,所以我添加了一个具有以下值的连接字符串表达式:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::ExcelFile] + ";Extended Properties='Excel 12.0 XML;HDR=NO';"

这按预期进行了评估,但是当我保存它时,包然后失败并出现以下错误:

验证错误。 ISSTimesheetImport 连接管理器“Excel 连接管理器”:SSIS 错误代码 DTS_E_OLEDBERROR。一个 OLE DB 发生错误。错误代码:0x80004005。 OLE DB 记录是 可用的。资料来源:“Microsoft Access 数据库引擎”Hresult: 0x80004005 描述:“找不到可安装的 ISAM。”。

这应该是简单的一点,但它让我发疯了。任何帮助将不胜感激。

【问题讨论】:

  • 将 Excel 连接上的延迟验证设置为 true。 SSIS 正在验证是否可以使用您的 excel 建立连接,但由于表达式直到运行时才正确构建,所以它失败了。右键单击 Excel 连接并打开属性,您可以在那里进行编辑。
  • 我在连接和数据流任务上都试过了,得到了以下错误:Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException:由于错误 0xC0011008“从XML。无法为此问题指定更多详细的错误信息,因为没有传递任何可以存储详细错误信息的事件对象。”。当 CPackage::LoadFromXML 失败时会发生这种情况。
  • 我刚刚发现了问题,我有时会将双引号更改为单引号以使表达式验证,但是我应该将它们更改为 \" 所以它现在可以正常工作了。
  • 更多设置 ExcelFilePath 属性的示例*.com/questions/13961534/… & *.com/questions/21536719/…

标签: excel ssis connection-string


【解决方案1】:

我刚刚发现了问题,我有时将双引号更改为单引号以使表达式验证,但是我应该将它们更改为 \" 所以它现在可以正常工作了。

【讨论】:

    【解决方案2】:

    不要更新连接字符串,而是在表达式下为 ExcelFilePath 使用该变量。

    【讨论】:

      最近更新 更多