我在通过SSIS将大型数据集(500k)导出到Excel时遇到问题,输出文件最终导出0行 . 在说我不应该将那么多记录导出到Excel之前,让我说明我知道并且通常不会 . 会计不需要CSV并且不愿意在Excel中打开CSV .
使用Visual Studio 2012 SSDT,以下是涉及的组件 .
-
执行SQL任务 - >使用 Headers 创建空文件
-
数据流任务 - >
-
OLE DB源 - > SQL查询
-
Excel目的地
程序包运行时,您可以看到从源到目标的记录 . 包完成没有错误,但是当你打开文件时,它是空的 . 唯一的东西是 Headers .
如果我选择前1000个记录并导出到Excel,它将按预期工作 .
我试过的一些事情:
-
导出到网络上的Excel
-
在本地导出到Excel
-
在网络和本地导出到CSV到Excel
-
使用带有"Excel 12.0"扩展属性的Office Access数据库引擎12.0导出到Ole DB目标 .
-
尝试以不同的用户身份运行
都具有相同的结果 .
任何人都可以提供任何有关为什么会发生这种情况以及如何进行的见解?
1 回答
当在SQL Server代理作业中运行ETL时,我们遇到了类似的行为 . 但是,在Visual Studio中调试它是有效的 . 所以我不知道,这个解决方案是否适用于你 .
原因是程序包运行的用户无法访问C:\ users \ Default .
我通过使用sysinternals进程监视器找到了这个 .
我的灵感来自那篇文章:Empty Excel File permissions issue: SSIS Excel Destination buffers large record sets through C:\Users\Default
[我在我的博客中解释了我对bug的搜索:https://www.csopro.de/biblog/2018/04/ssis-fehlerbehebung-bei-excel-destination-schreibt-keine-zeilen/不幸的是它是德语]