我每天都会将大量数据从Oracle迁移到SQL服务器。使用oracle系统的应用程序以非标准格式存储日期,这些日期需要转换为SQL Server日期。
我已经创建了一个自定义SSIS转换组件。我的问题是,当运行SSIS包时会占用大量内存,通常会达到几千兆字节。在程序包运行时,使用量会持续膨胀。
问题在于服务器上运行的进程“IISServerExec.exe”。从任务管理器中看到,运行时内存使用量不断增加。其中一些软件包需要每天在同一时间运行,但随着内存膨胀,系统只能管理两到三个。
我也跟踪了很多在线示例,他们遇到了同样的问题。一个例子是来自microsoft的简单组件将字符串转换为大写。这个例子消耗了超过600mb的ram,其中6个输入列超过了900万行。
如果我使用派生列创建类似(但更简单)的转换,则这些转换消耗的内存少于100mb。
我正在使用SQL Server 2012 SP2(11.0.5058),并在运行Windows 7和Server 2008 R2的四台独立计算机上进行了测试,每台计算机都通过Windows更新安装了所有更新。所有编程都在Visual Studio 2013上的VB中完成.Oracle连接使用Attunity源连接器。
是否需要在processInput部分结束时运行命令以清除ram或预期的内存使用量?