上下文
我正在尝试创建一个SSIS包,以便从EXCEL(Microsoft EXCEL工作表(.xlsx))文件导入SQL Server 2012。所有文件都有一个具有相同选项卡名称的选项卡。
-
当我指定一个文件时,这个过程就会起作用。
-
当我尝试使用For Each容器时,该过程失败。
在For Each File枚举器中,我创建了一个变量[user@ExcelFileName]
错误
在excel连接管理器的表达式中,我尝试了ConnectionString的以下值:
>-@[用户::ExcelFileName]
-"提供程序=Microsoft.Jet.OLEDB.4.0;数据源="+@[用户::ExcelFileName]+";扩展属性=Excel 8.0"
-"提供程序=Microsoft.ACE.OLEDB.12.0;数据源="+@[User::Filename]+";扩展属性=\"Excel 12.0\";"
- "提供程序=Microsoft.ACE.OLEDB.12.0;数据源="+@[User::Filename]+";扩展属性=\"Excel 12.0;HDR=是\";"
他们都失败了。
这是错误消息:
数据流任务[Excel Source[1]]出错:SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器"Excel connection manager"的AcquireConnection方法调用失败,错误代码为0xC0202009。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败原因的详细信息。
数据流任务[SSSIS.Pipeline]出错:组件"Excel Source"(1)验证失败,返回错误代码0xC020801C。
数据流任务[SSSIS.Pipeline]出错:一个或多个组件验证失败。
数据流任务出错:任务验证过程中出现错误。
包[连接管理器"Excel连接管理器"]出错:SSIS错误代码DTS_E_OLEDBERROR。出现OLE DB错误。错误代码:0x80040E73。OLE DB记录可用。来源:"Microsoft OLE DB服务组件"Hresult:0x80040E73描述:"初始化字符串的格式不符合OLE DB规范。".
有什么建议吗?
您需要在32位环境中运行包,因此请将项目的Run64BitRuntime属性设置为false。然后开始你的包裹。