【发布时间】:2017-12-13 18:43:04
【问题描述】:
我有一个 SSIS 包,可将 Excel 2013 (xlsx) 文件导入 SQL Server (2016) 表。我遇到的问题是,如果文件超过一定大小,包就会失败。错误是:
错误:打开“Sheet1$”的行集失败。检查对象是否存在于数据库中。 [DTS.Pipeline] 错误:“组件”验证失败,返回验证状态“VS_ISBROKEN”。
看起来好像根本看不到文件/工作表。一些有趣的笔记:
无论文件大小如何,该包都可以在 SQL Server Data Tools 2015 设计器中正常工作。只有在通过集成服务目录中的 SSMS 或通过 SQL 代理作业运行时才会失败。
失败的行数不是一个常数。它似乎更多地取决于导入的数据总量。例如,如果每行的字符数较小,它会在大约 25k 行时失败。如果每行有更多字符,它将失败大约 16k 行。无论哪种情况,到达故障点时的总文件大小仍然小于 1MB。
我用相同的已知良好记录重复了 X 千次测试,所以我知道导致问题的不是不良记录。
最初该文件位于网络共享上,但我已将其移动到直接位于服务器的驱动器上,以排除任何网络不稳定。没有变化。
我在同一个 SQL 服务器上运行的其他包导入了 10 万条或更多记录,并且总文件大小要大得多(几 MB)。
有什么想法会导致这种情况吗?
【问题讨论】:
标签: sql-server excel ssis etl