我正在尝试使用 SSIS 遍历 Excel 文件目录并将它们放入 SQL Server 中的表中。我似乎有一个基本的选择 - 要么将相同的电子表格转储到表中 10 次,要么收到错误消息。我使用此处的说明:
http://www.sqlis.com/post/Looping-over-files-with-the-Foreach-Loop.aspx
错误信息:
标题:包裹验证错误
包裹验证错误
附加信息:
数据流任务 [目标 - HR_Data [200]] 出错:SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“DestinationConnectionOLEDB”的 AcquireConnection 方法调用失败,错误代码为 0xC0202009。在此之前可能已发布错误消息,其中包含有关 AcquireConnection 方法调用失败原因的更多信息。
数据流任务 [DTS.Pipeline] 处出现错误:组件“目标 - HR_Data”(200) 验证失败并返回错误代码 0xC020801C。
数据流任务 [DTS.Pipeline] 出现错误:一个或多个组件验证失败。
数据流任务错误:任务验证期间出现错误。
HR 完整数据加载时出错 [连接管理器“DestinationConnectionOLEDB”]:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。来源:“Microsoft OLE DB Provider for ODBC Drivers”Hresult:0x80004005 描述:“[Microsoft][ODBC Driver Manager] 未找到数据源名称,并且未指定默认驱动程序”。
(Microsoft.DataTransformationServices.VsIntegration)
纽扣:
好的
答案1
本质上,SSIS 对 Excel 文件的工作方式不同,其指令更像是这。您需要在表达式字段中手动编写连接字符串,而不是直接将变量放入其中。字符串最终将看起来像这样:
“提供程序 = Microsoft.Jet.OLEDB.4.0;数据源 =“ + @[User::FileName] +”;扩展属性 = \“Excel 8.0;HDR=YES\”;”
在此过程中,您必须确保将项目设置为 32 位而不是 64 位。您可能需要刷新列标题并调试电子表格,基本上 SSIS 只是有点不直观(!)