【问题标题】:SSIS Dynamically Import Excel FilesSSIS 动态导入 Excel 文件
【发布时间】:2018-06-06 17:45:59
【问题描述】:

所以我创建了一个 ForEach 循环和一个数据流任务以从 Excel 写入 SQL DB。使用硬编码的 Excel 源代码一切正常。一旦我更改连接字符串以使用文件路径变量作为数据源,我就会收到以下错误:

[Excel 源 1] 错误:SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“Excel Connection Manager 1”的 AcquireConnection 方法调用失败,错误代码为 0xC0202009。

我在执行数据流之前在消息框中打印文件路径,这样我就知道变量正在工作。

我自然浏览了大量的答案和教程,但什么也没有。这是我尝试过的:

  • 更改连接字符串的数据源
  • 使用 ExcelFilePath 表达式代替连接字符串
  • 在连接管理器属性中更改 Excel 文件名
  • 以 32 位运行包
  • 在所有数据流任务和连接管理器中将延迟验证设置为 True
  • 删除和创建新的连接管理器
  • 以上组合,大量试错

我正在使用 Visual Studio 2013。

感谢您的帮助,因为我整个下午都在用这个拔头发 :)

【问题讨论】:

  • 听起来你缺少在连接管理器上将 foreach 枚举数设置为文件名的表达式
  • 另外,如果您只更新路径,则“连接字符串”与“Excel 文件路径”不同,请使用后者
  • 我在 answer 中介绍了在 Excel 文件中使用表达式
  • 更改属性延迟验证。
  • @billinkc 我读了你的精彩回答,不幸的是它没有用。我在发布这个问题之前遇到了它,并尝试使用 excel 文件路径。我不知道还能做什么。

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


【解决方案1】:

我从来没有让这个工作,所以我使用 SQL 将 Excel 文件导入数据库:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\Test\Excel_Data.xlsx;', 'SELECT * FROM [Sheet1$]')

https://www.sqlshack.com/query-excel-data-using-sql-server-linked-servers/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 2021-01-02
    • 2017-04-29
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2016-05-21
    相关资源
    最近更新 更多