我在运行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);
类似于this(未提及解决方案)
答案 0 :(得分:0)
经过多日努力。我终于找到了解决方案。
根本原因:
MsDtsSrvr.exe是所有SSIS服务的根目录。对于在该计算机上运行的每个SSIS包,MsDtsSrvr.exe内存将不断增长。
RunningPackages类将尝试从MsDtsSrvr.exe的内存中获取所有正在运行的包计数。
如果服务器在一段时间内连续运行大量软件包,MsDtsSrvr内存将溢出,导致 ArithmeticOverflow 异常
<强>解决方案:强>
我们需要释放MsDtsSrvr内存。所以我们需要重新启动SSIS服务或重新启动 MsDtsServer110 服务(它将在后台运行)