2

我在运行 SSIS 包的 SQL-Server 代理作业中突然出现错误:

System.Reflection.TargetInvocationException:调用的目标已引发异常。---> System.OverflowException:算术运算导致溢出。在 Microsoft.SqlServer.Dts.Server.DtsServer.RunningPackageConvert(RunningPackage 包,DTSRunningPackage100& 复制) 在 Microsoft.SqlServer.Dts.Server.DtsServer.GetRunningPackages()

SSIS中的相关代码:

Microsoft.SqlServer.Dts.Runtime.Application app = new Microsoft.SqlServer.Dts.Runtime.Application();
RunningPackages pkgs = app.GetRunningPackages(null);

看起来与类似(未提及解决方案)

4

1 回答 1

0

经过几天的挣扎。我终于找到了解决方案。

根本原因:
MsDtsSrvr.exe 是所有 SSIS 服务的根。对于在该计算机上运行的每个 SSIS 包,MsDtsSrvr.exe 内存将持续增长。

RunningPackages 类将尝试从 MsDtsSrvr.exe 的内存中获取所有正在运行的包计数。

如果服务器在一段时间内持续运行大量程序包,则 MsDtsSrvr 内存将溢出,从而导致ArithmeticOverflow异常

解决方法:
我们需要释放MsDtsSrvr内存,所以需要重启SSIS服务或者重启MsDtsServer110服务(会在后台运行)

于 2017-11-21T13:58:05.813 回答