我有一个简单的SSIS包,我正在尝试将同一组数据从表导出到平面文件和excel目标。当我在本地运行时,该包工作正常,它创建包含数据的文本文件和excel文件。
但是当部署到不同的服务器时,sql代理作业运行正常,并且该软件包的日志内部集成服务目录表示它编写了类似于9000行的Excel,并且还创建了一个新的excel文件,但它没有写任何数据到它(空白只有标题)。文本文件工作正常,它具有我需要的所有数据。
SSIS包流程:
我正在使用Sql server 2014,带有SSDT的Visual Studio 2013并在Excel目标中使用Excel 2007。
答案 0 :(得分:2)
我在从预定的 SQL 代理作业写入 Excel 文件中的多个工作表时遇到了同样的问题。它工作了大约 4 个月。然后突然间没有更改包,5 个工作表之一不再填充数据。没有生成错误消息,并且在 Visual Studio 和 Data Tools(我们过去称之为旧的“BIDS”工具)的每个测试中都运行良好。
我从来没有找到解决方案,它仍然没有将任何数据写入 Excel 文件中 5 的单个工作表。 (因此,上面关于从 SQL 代理运行作业的帐户没有适当权限的答案不是此问题的正确答案。)
另外,我今天构建的一个新包也有同样的问题,只有这个只有一个工作表。同样,在开发环境中工作正常,但目标文件中没有数据出现,也没有错误。不仅如此,文件上的时间戳与模板文件相同——它似乎从未尝试写入文件。
检查集成服务目录中包的每个运行日志在每个日志中都有一个条目,显示为数据流任务“写入”的 9K+ 记录。
最后,如果我更改目标文件名,SQL 代理作业会生成预期的错误,从而排除猜测路径错误的答案。
这很奇怪。而且很气人。
答案 1 :(得分:1)
我们遇到了同样的问题。 解决方案是运行SSIS包的用户必须具有对c:\ users \ default的完全访问权限。
您可以通过在执行SSIS作业的计算机上运行sysinternals的进程监视器来检查这一点。
您可以在此处找到更多信息:
答案 2 :(得分:0)
使用使用Excel对象的计划SSIS包时遇到了奇怪的行为。
我的修复方法是编辑代理作业属性。在Execution Properties选项卡上,尝试启用"使用32位运行时"选项并强制SSIS以32位模式而不是64位模式运行。