从Excel(2007)加载SSIS时出错 - 错误:打开" Sheet1 $"的行集。失败& VS_ISBROKEN

时间:2017-01-12 06:38:51

标签: excel ssis

SSIS包正在使用MS Access OLEDB驱动程序加载Excel 2007文件。

错误消息 打开" Sheet1 $"的行集。失败。检查数据库中是否存在该对象 EX_SRC - 使用OLE连接器的Excel通用文件源验证失败并返回验证状态" VS_ISBROKEN"。
SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。
任务验证期间出错。

错误说明 Excel电子表格在SSIS中的桌面上加载正常。它已部署为使用Active Batch作为调度程序在服务器上运行SSIS目录。在测试环境中,这也可以。只有从生产服务器运行包时才会出现错误。

故障排除

  1. VS_ISBROKEN消息通常表示元数据问题,即列类型已更改或列丢失等。要更正此问题,您需要从受影响的电子表格中打开SSIS中的数据流任务并更正问题或刷新元数据。但是,当我在SSIS中执行此操作时,没有报告错误,因此无需修复或刷新。
  2. 确保我的桌面,测试服务器&生产具有相同的驱动程序版本,相同的区域设置。
  3. 以为生产服务器上的日期列可能会被区别对待,这会导致元数据" VS_ISBROKEN"错误。如上所述,检查生产服务器上的区域设置与我的桌面相同,并且在本地不会出现任何错误。
  4. 无法在Production上安装SSIS以在服务器上本地测试它。
  5. 我有一个类似的包成功加载Excel 2007格式,这排除了驱动程序无法正常工作的问题。
  6. 64位设置为true,因为这不使用Excel连接。
  7. 有关进一步解决问题的建议吗?

2 个答案:

答案 0 :(得分:2)

在尝试了我能想到的一切后,我一直回到这一篇文章:Post describing rights access for buffer 运行调度工具的帐户没有对SSIS服务器上的C驱动器的写访问权。虽然电子表格只有5列乘30 000行,但似乎SSIS需要将缓冲区写入C盘。在调试此问题期间,我通过运行只有5行成功运行的作业来测试它。在授予对C驱动器的调度帐户写访问权限后,问题已解决并成功运行。

答案 1 :(得分:0)

在SSIS设计模式中,路径&文件变量应该在值字段而不是表达式字段中设置,否则调度软件如Active Batch将无法替换值