SSIS 2012目录内存泄漏

时间:2013-11-13 08:58:28

标签: sql-server ssis

我有一个包,每个循环容器都有1个,它有一堆插入并选择。

循环迭代的列表大约有几百万个复杂的行......

包位于 Integration Services目录中,只需在SSMS中执行(无代理作业)即可运行。

当我查看资源监视器时, ISServerExec.exe (与dtsexec.exe相当)的内存每秒都在增长(每个循环需要大约1秒才能完成)。

一段时间后,Windows服务器中的所有内存都被使用,服务器最终分页到磁盘。然后循环查询的等待时间变得很大,每个查询20到30秒。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我会将列表写入SQL表,然后使用围绕For Each容器的For循环容器进行循环。

在For循环容器的开头,我将使用SELECT TOP 1从列表中读取一条记录,并将其传递到Recordset变量中。应该将该变量的范围移动到For循环容器。

在For循环容器的末尾,我会更新一个标志和/或一个日期时间列,以指示该行已被处理,并且不应包含在初始SELECT的下一次迭代中。

在此过程中,您可以更新列表,以指示每行的进度/状态。

此设计对于记录和重新启动要求也很有用。