3

我有一个 SSIS 包,它只运行一个编写的 SSIS 脚本任务(不是我写的)。然后,此脚本以线程方式动态创建包并运行它们,管理活动的线程数。这是使用 SQL 代理启动的。这是从 Attunity Source 中针对 11g Oracle DB 获取数据。

当我在任务管理器中查看进程时,我看到 DTexec.exe 慢慢消耗越来越多的内存。当它达到大约 250MB 时,它会失败。它通常每次都返回不同的错误,有时甚至显示为来自 SQL 代理的取消请求。

我减少了最大内存以提供更多给操作系统,但没有用。

它不应该是 memToLeave 问题,因为它是 64 位的。我试过通过命令行运行,没有。

视窗服务器 2003 SQL 2008R2

我在这方面遇到了很多麻烦,并且已经尝试了我在网上可以找到的所有内容。有人有想法么?我确定我在这里遗漏了一些东西,所以问问,我会为你找到的。

4

1 回答 1

2

所以,我想通了。

C# 的编写方式没有显式销毁正在创建的线程的机制,但是这在以前从来不是问题的原因是脚本任务在 SSIS 包内创建了一个 DLL。我的环境默认具有 32 位运行时,因此构建它。如果 SSIS 包以 32 位模式构建,它的硬 RAM 限制为 256MB,而 64 位则没有这样的限制。那我该怎么办?

在服务器本身上的 Visual Studio 中打开包,然后保存它。这会强制它以 64 位模式重新编译(如果它是该服务器上的默认运行时间)。

于 2012-04-18T15:14:22.023 回答