【问题标题】:SSIS Excel Destination is EmptySSIS Excel 目标为空
【发布时间】:2018-02-12 22:13:05
【问题描述】:

我在通过 SSIS 将大型数据集 (500k+) 导出到 Excel 时遇到问题,其中输出文件最终导出了 0 行。在说我不应该将那么多记录导出到 Excel 之前,让我声明我知道并且通常不会。会计不想要 CSV,也不愿意在 Excel 中打开 CSV。

使用 Visual Studio 2012 SSDT,这里是涉及的组件。

  1. 执行 SQL 任务 -> 创建带有标题的空文件
  2. 数据流任务->
    • OLE DB 源 -> SQL 查询
    • Excel 目的地

当程序包运行时,您可以看到从源流向目标的记录。包完成没有错误,但是当您打开文件时,它是空的。里面只有标题。

如果我选择前 1000 条记录并导出到 Excel,它会按预期工作。

我尝试过的一些事情:

  1. 在网络上导出到 Excel
  2. 在本地导出到 Excel
  3. 在网络和本地都以 CSV 格式导出到 Excel
  4. 使用具有“Excel 12.0”扩展属性的 Office Access Database Engine 12.0 导出到 Ole DB 目标。
  5. 尝试以不同用户身份运行

结果都一样。

谁能提供任何关于为什么会发生这种情况以及如何进行的见解?

【问题讨论】:

  • 在提出第一个问题之前,建议阅读Tour Page,了解更多关于提出好问题、接受答案和其他网站规则的信息。还可以获得您的“知情”徽章。
  • 尝试手动创建excel然后运行ssis包,结果一样吗?还可以尝试从目标 oakdome.com/programming/SSIS_DataTransform.php 创建表
  • 如果是这样,请确保没有仍在运行的 Excel 进程。打开任务管理器并检查正在运行的EXCEL 进程
  • 不太确定,会不会是数据错误造成的?
  • @PrabhatG 我找不到任何数据问题。

标签: sql-server excel ssis etl


【解决方案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

[我在我的博客中解释了我对错误的搜索:https://www.csopro.de/biblog/2018/04/ssis-fehlerbehebung-bei-excel-destination-schreibt-keine-zeilen/不幸的是它是德语]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多