【发布时间】:2016-01-15 20:28:37
【问题描述】:
我每月都会收到需要导入 SQL 的电子表格。我通常做的是使用 SQL Server 导入和导出向导并导入到一个临时表中,然后我在其中调用存储过程来完成导入过程。这一切在我的生产服务器上运行良好,并且在我的开发机器上运行良好,直到上周我全新安装了 Windows 10。现在,我仍然能够导入只有几千行的较小电子表格,但是,如果我尝试从具有 500,000 多行数据的电子表格中导入数据,则“设置源连接”和“设置目标连接”都需要几分钟,然后似乎挂在“复制”上。我检查了日志并运行 SQL Profiler,但没有看到任何有关失败的信息。我已经让该过程运行了一个多小时并最终将其杀死,查看了临时表并显示没有导入任何记录。数据格式很好,因为我可以毫无问题地在生产服务器上导入。
现在是关键...只有在 Excel 中同时打开电子表格时,我才能在我的开发服务器上导入这些大工作表,(请注意,对于较小的电子表格,我不需要电子表格打开以导入)。打开电子表格后,导入过程可以正常工作,但速度很慢,而且不是一种有效的处理方式。
对于为什么导入仅适用于小型电子表格,除非它也在 Excel 中打开的电子表格有什么想法吗?
我在 Windows 10 Pro 和 Office 2016 上使用 SQL Server 2008 R2。我还安装了 AccessDatabaseEngine - 2007。
编辑: 我创建了一个 SSIS 包并按照建议运行它,一切都按预期工作。为了让事情变得更奇怪,我通过导入/导出向导并选择立即运行并创建 SSIS,一切都再次按预期工作。我再次浏览了向导,但选择了立即运行(没有创建 SSIS),它仍然挂起复制。我尝试再运行 4 次,如果选择“立即运行”和“创建 SSIS”,每次都可以运行,但每次只选择“立即运行”(不创建 SSIS)时都会失败。老实说,我很困惑这怎么会发生,并愿意接受更多建议。
【问题讨论】:
-
你查看过内存使用情况吗?
-
您是否在 ETL 过程中使用 SSIS?
-
@KamranFarzami 是的,我的 CPU、内存和磁盘使用率都在 30% 或以下,并且在尝试导入时保持在该水平。
-
不要直接从导入/导出向导运行导入,而是保存向导生成的 dtsx (SSIS) 包并在 Visual Studio 中打开;您可以在执行结果发生时观察它们。您可以在那里找到答案。
-
@MikeZalansky 我创建了 SSIS 包并按照您的建议运行它,并用结果更新了我的原始帖子。
标签: sql-server excel sql-server-2008-r2 odbc sql-import-wizard