SSIS包无法将数据写入Excel目标

3
我有一个简单的SSIS包,正在尝试从表中导出同一组数据到平面文件和Excel目标。当我在本地运行时,该软件包正常工作,并创建具有数据的文本文件和Excel文件。
但是,当部署到不同的服务器时,SQL代理作业正常运行,并且集成服务目录中软件包的日志显示它已将约9000行写入Excel。新的Excel文件也已经创建,但是它没有向其中写入任何数据(只有标题,其余为空)。文本文件可以正常工作,并且包含我需要的所有数据。
SSIS包流程:

Screenshot

我正在使用Sql server 2014、Visual studio 2013和SSDT,并在Excel目标中使用Excel 2007。

删除目标连接并添加新的目标管理器。然后在目标管理器中选择目标文件。这可能会起作用! - Kinchit Dalwani
3个回答

2
我曾经遇到与一个计划的 SQL Agent 作业中写入 Excel 文件的多个工作表相关的问题。这个问题在4个月内一直表现良好,但突然之间,在没有对包进行任何更改的情况下,其中5个工作表中的一个不再填充数据了。没有生成错误消息,并且从 Visual Studio 和 Data Tools(我们过去称之为“BIDS”工具)的每个测试都正常工作。
我从未找到解决方案,它仍然不会向Excel文件中的单个工作表写入任何数据。(因此,关于 SQL Agent 作业运行时帐户没有适当权限的答案并不适用于此问题。)
另外,今天我构建的一个新包也出现了相同的问题,只有一个工作表。同样,在开发环境中工作正常,但目标文件中没有数据出现,也没有错误。更糟糕的是,文件的时间戳与模板文件相同——似乎它甚至没有尝试向文件写入任何内容。
在集成服务目录中检查每个包的每次运行日志时,数据流任务的每个日志中都会显示已“写入”9K+条记录。
最后,如果我更改目标文件名,SQL Agent 作业将生成预期的错误消息,因此排除了路径错误的答案猜测。
这很奇怪,令人沮丧。

对于那些建议将 SQL Agent 作业设置为以32位模式运行的人(似乎几乎每个 SSIS 问题都会建议这样做!),我所描述的症状将排除该解决方案。毕竟,在我的经验中,作为 SQL Agent 作业在64位下运行了数月,并突然出现问题。此外,它仍然继续写入同一文件中的所有其他工作表而没有任何问题。很难相信(但也不奇怪)在这么多年之后,这个问题仍然存在。微软,请醒醒!SSIS 和 Excel 是你们的孩子-它们应该友好地相处! - user15001586
我正在遇到完全相同的问题。我们的文档中有多个工作表,每个工作表都获得数据。一个工作表有100行,另一个工作表有近22,000行。我尝试更改填充文档的选择器以返回更少的行,直到它能正常工作,我确定大约需要7200行才能正常工作。大约750KB的数据。你解决了这个问题吗?我猜测这可能是由于糟糕编写的ACEDB驱动程序造成的问题。是否有任何免费或更便宜的解决方案?我找到了一个第三方驱动程序,但它要花费8000美元一次性或1000美元/年。 - RobbZ

2
我们遇到了同样的问题。 解决方法是运行SSIS包的用户必须对c:\users\default具有完全访问权限。
您可以通过在执行SSIS作业的计算机上运行sysinternals的进程监视器来检查此项。
您可以在此处找到更多信息:

这就是答案,因为我们刚刚遇到了同样的问题,而这个解决方案解决了它。 - RobbZ

0

在使用调度的SSIS包并使用Excel对象时,我遇到了奇怪的行为。

对我来说,解决方法是编辑代理作业属性。在“执行属性”选项卡上,尝试启用“使用32位运行时”选项,并强制SSIS以32位模式而不是64位模式运行。


DTSRun.exe的位数必须与其使用的任何OLE DB驱动程序的位数匹配,这是正确的,但在64位操作系统中,32位和64位版本都可以正常工作。 - ajeh
我尝试在32位模式下运行,但是没有成功。而且我们的某个高级环境也没有32位模式的驱动程序,所以我必须使用64位模式来工作。 - user5947731

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接