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