Sql server SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80040E37

Sql server SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80040E37,sql-server,excel,ssis,bids,Sql Server,Excel,Ssis,Bids,这是我在这里的第一个问题,在发布这个问题之前,我已经检查了所有与这些问题相同或与此相关的问题,但尽管应用了其他成员建议的修复方法,我仍然无法解决问题。请帮忙 我的场景:我将多个excel工作表(MS excel 2007格式)放在一个工作簿中。我创建了一个具有包范围的用户变量,该变量在for each循环容器中保存第一个工作表名称 我想做什么 :我想在一个工作簿中读取多个excel工作表,然后将它们写入SQL表。我已经能够完成读取单个excel文件并将其写入SQL表,但不能完成多个excel

这是我在这里的第一个问题,在发布这个问题之前,我已经检查了所有与这些问题相同或与此相关的问题,但尽管应用了其他成员建议的修复方法,我仍然无法解决问题。请帮忙

我的场景:我将多个excel工作表(MS excel 2007格式)放在一个工作簿中。我创建了一个具有包范围的用户变量,该变量在for each循环容器中保存第一个工作表名称

  • 我想做什么
:我想在一个工作簿中读取多个excel工作表,然后将它们写入SQL表。我已经能够完成读取单个excel文件并将其写入SQL表,但不能完成多个excel文件

  • 安装的软件:

    我正在使用SQL Server企业版R2,其中包含投标

  • 到目前为止,我一直遵循的解决步骤:

    • 已将excel连接管理器中的
      DelayValidation
      属性设置为
      True
    • 使用了具有包级别作用域的变量,并为其指定了第一个工作表名称,在我的示例中,该名称被命名为“Sheet1”
    • 我的连接字符串是
      “Provider=Microsoft.ACE.OLEDB.12.0;数据源=“+@[User::SheetName]+”;扩展属性=\“EXCEL 12.0 XML;HDR=YES\”;“
      评估为正确的
    • 我使用32位操作系统时,已按照本论坛中的建议将Package属性设置为使用32位验证
我在设计时没有收到任何错误,但当我开始调试项目时,我收到以下错误:

[Excel Source [1]] Error: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80040E37.
[Excel Source [1]] Error: Opening a rowset for "C:\Users\XYZ\Desktop\Dataset\BasicData.xlsx" failed. Check that the object exists in the database.
[SSIS.Pipeline] Error: "component "Excel Source" (1)" failed validation and returned validation status "VS_ISBROKEN".
[SSIS.Pipeline] Error: One or more component failed validation.
Error: There were errors during task validation.
请问,谁能告诉我我做错了什么,以及如何修复这些错误


谢谢,

您是否在表单中循环?如果每张表单中的表都相同,这应该不会有问题,但是您没有在连接字符串iirc中设置表单,而是在源代码中设置它。感谢您的回复。我正在使用for each容器循环循环表单。但是,请您解释一下我无法理解你答案的这一部分“不是在连接字符串iirc中设置工作表,而是在源代码中设置它“如何通过源实现itIf您指的是“excel源”,然后是在excel源中我设置了工作表路径,并且在OpenRowsetVariable中定义了其属性值User::sheetname excel文件是否存在于该位置?是否已被其他人/人打开?excel文件存在于指定位置,任何人都无法打开。