打开“Sheet1$”的行集失败。检查对象是不是存在于数据库中
Posted
技术标签:
【中文标题】打开“Sheet1$”的行集失败。检查对象是不是存在于数据库中【英文标题】:Opening a rowset for "Sheet1$" failed. Check that the object exists in the database打开“Sheet1$”的行集失败。检查对象是否存在于数据库中 【发布时间】:2021-11-29 22:07:55 【问题描述】:希望这是一个已经知道答案的小问题,但我真的很困惑可能导致这个问题的原因。我已经尝试研究此错误消息,但我发现的信息似乎根本没有帮助。也许我只是不是一个高效的 Google 员工 :) 还附上了一张图片。
我正在尝试在 SQL Server Management Studio 中创建一个 SSIS 包。该软件包只是将数据从公司共享驱动器上的 Excel 文件导入到数据库表中。完成 SSIS 包后,我选择“立即运行包”并保存包。 SSIS包运行&保存成功;所有员工记录都插入到表中(太棒了!)。现在,这就是问题发挥作用的地方。我想将该 SSIS 包作为作业的一部分执行。但是,在运行作业并尝试执行 SSIS 包时,我收到以下错误消息:
打开“Sheet1$”的行集失败。检查对象是否存在于数据库中。 ...返回验证状态“VS_ISBROKEN”。
为什么 SSIS 包在首次创建时工作/运行成功,但在从作业中执行时却继续失败?
谢谢。enter image description here
=============
编辑:
编辑这篇文章,因为它太长了,无法添加到评论部分,但是,我不认为这是一个帐户/访问问题 - 仅出于一个小原因。让我分享更多信息,也许它会引导我们走另一条路。但从技术上讲,我们有两个 Excel 电子表格和 SSIS 包可以做同样的事情。 Excel 文件是不同的数据集,但它们存储在同一个公司网络驱动器/文件夹中,并且都被上传到同一个数据库(但是不同的表)。 Excel 文件“A”没有遇到此问题,但 Excel 文件“B”是。并且这两个作业都设置为使用相同的帐户运行。此外,另一个小/旁注 - 如果我在 Excel 文件“A”上执行“另存为”并重新创建 SSIS 包/作业,那么新文件(Excel 文件“C”)将遇到与我们相同的问题面对 Excel 文件“B”。那么,为什么这项工作会在“原始文件”上运行,但一旦我执行“另存为”并在新文件上尝试它就会继续失败?
【问题讨论】:
那么Executed as user ...
是您的帐户还是其他帐户?可能是执行 SSIS 的帐户,也可能是代理帐户,但该帐户是否有权访问 Excel 文档所在的共享?
@AlwaysLearning 可能是正确的,但如果它没有帮助,请尝试在 Visual Studio 中打开包(如果您没有将包保存为文件,则可以从服务器添加包)。从那里您应该能够准确地看到问题所在,因为连接管理器可能会出错。
请在上面的帖子中查看我的编辑,因为我无法将它添加到 cmets 部分。另外,我确实安装了visual studio,但我并不精通它。您能否解释一下我将在工具中的哪个位置进行故障排除/查找确切问题?感谢您的帮助!
【参考方案1】:
您是否检查过文件“A”是否是带有 .xls 的旧 Excel 文件,而文件“B”/“C”是否是带有 .xlsx 的新 Excel 文件?
我发现了这个: http://www.alankoo.com/2012/09/strange-error-loading-excel-files-xlsx.html
或者它可能像 Error in SSIS loading form Excel (2007) - Error: Opening a rowset for "Sheet1$" failed & VS_ISBROKEN
【讨论】:
以上是关于打开“Sheet1$”的行集失败。检查对象是不是存在于数据库中的主要内容,如果未能解决你的问题,请参考以下文章