SSIS动态导入Excel文件

时间:2018-06-06 17:46:00

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

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

  

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

我在执行数据流之前在消息框中打印文件路径,因此我知道该变量正在运行。

enter image description here

enter image description here

当然,我浏览了大量的答案和教程,但没有。这是我试过的:

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

我正在使用Visual Studio 2013。

我很感激你的帮助,因为我整个下午一直在用头发拔毛:)

1 个答案:

答案 0 :(得分:0)

我从来没有这样做,所以我使用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/