我在这里有一个奇怪的。
我有一个软件包可以将一些SQL服务器数据库中的某些数据复制到临时表中。然后将该数据转换并复制到实时表中。这一切都是通过SQL作业运行的SSIS包完成的。
几个月来它已经完全稳固了。今天早上,作业失败,SQL作业中的无效“DTS_E_PRIMEOUTPUTFAILED”错误,在将数据复制到暂存中的部分。
所以我从BIDS手动运行它,它没有任何错误。奇怪,我想。 然后我从执行它的服务器手动运行它,但是通过SSIS执行工具而不是SQL作业。没有错误。
但是,当我从作业中运行它时,它会失败。它总是部分复制数据(应复制1158行,因此不是很多数据),但在813行后失败。我查看了第814行的数据,看起来一切都很好。
我使用与SQL作业运行相同的帐户登录到服务器 - 它使用映射到域帐户的凭据。
所以我暂时设置限制,不在814导入行,现在它可以正常工作!! (它导入1157行)
包中还有其他任务可以复制比这更多的行,并且它们工作正常。
所以: - 为什么它是手动工作而不是工作? - 关于814行的奇怪之处是什么?我已将整个数据集复制到Excel中,并且该行中没有任何内容是奇怪的,我很确定。如果有什么奇怪的东西,为什么它只会在从作业运行时影响包而不是手动?
最后,我把行814放回去,然后随机取出另一行,它就可以了!!
如果我强行增加一行,它也可以。
所以它出于某种原因不喜欢它导入的行数为1158! (但仅在通过SQL作业运行时)
我完全被难倒了。
答案 0 :(得分:1)
我遇到了类似SSIS包的问题,问题最终成为其中一个表格上的TRIGGER,导致批量插入时出现问题。永远缩小范围,因为违规行为受批量插入提交的影响。我的解决方案是将SSIS数据流更改为不使用批量插入(关闭"快速加载")。速度慢,但它的工作原理。无论如何,需要考虑的事情。
答案 1 :(得分:0)
此SSIS流程使用的RAM内存怎么样?在过去几周我一直在努力解决类似的问题。我发现SSIS进程在服务器上的RAM内存不足,因为SQL Server进程使用了大量的RAM内存。当我的SSIS进程达到2GB的RAM内存(当时可用的RAM)时,我的SSIS进程失败,所以我刚刚更改了SQL Server Management Studio中SQL Process使用的最大RAM ,重启了进程,运行再次SSIS,它结束了很棒。 (我的SSIS包使用的总RAM大约为2.7 GB)。希望这可以帮助! =)