此问题与我之前在Maximum number of excel processes?的问题有关,但行为不同。
简而言之:有一个COM +组件在启动时会打开许多excel进程。句柄被添加到列表中,因此它们不会超出范围或垃圾回收。
如果我在本地运行此组件(Windows 7 64位,12 Gb内存),它会正常运行并打开30个excel进程而不会出现问题。
如果我在(虚拟)服务器(Windows Server 2003 R2 SP2 64位,4 Gb)上运行此组件,则前21个excel进程正确启动,但其余9个进程未创建;在事件日志中,我看到以下错误的9次:
Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005.
因此创建最后9个excel进程导致异常,它似乎达到了21个excel进程的限制。
如果我在另一台服务器(Windows Server 2003 SP 2,1 Gb RAM)上试用它,它会创建22个excel进程,而8个进程会出现相同的异常。
我想知道是什么导致excel进程创建在这些服务器上失败?
编辑:如果我使用开始菜单手动打开它们,我可以毫无问题地打开30个excel实例。
有什么想法吗?
谢谢, L
答案 0 :(得分:0)
从技术上讲,你所做的事情根本不受支持: http://support.microsoft.com/kb/257757
Microsoft目前不推荐,也不支持, 任何无人值守的Microsoft Office应用程序的自动化, 非交互式客户端应用程序或组件(包括ASP, ASP.NET,DCOM和NT服务),因为Office可能会出现不稳定 Office在此环境中运行时的行为和/或死锁。
也就是说,由于服务器之间存在轻微的不一致,我相信你遇到了某种资源冲突/限制,而不是特定于excel的东西。由于服务器上的内存有限,它可能只是耗尽或碎片化内存。