2012-06-25 2 views
1

Эта проблема связана с моим предыдущим вопросом в Maximum number of excel processes?, но с другим поведением.Ошибка при создании нового процесса excel

Вкратце: есть компонент COM +, который открывает несколько процессов excel, когда он запущен. Ручки добавляются в список, поэтому они не выходят за рамки или собирают мусор.

Если я запустил этот компонент локально (Windows 7 64 бит, 12 ГБ памяти), он начнет нормально, и он откроет 30 процессов excel без проблем.

Если я запускаю этот компонент на (виртуальном) сервере (Windows Server 2003 R2 SP2 64 бит, 4 Гб), то первые 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 превосходят процессы.

Если я попробую на другом сервере (Windows Server 2003 SP 2, 1 Gb RAM), он создает 22 excel-процесса и 8, которые не работают с тем же исключением.

Мне интересно, что заставляет процесс создания excel терпеть неудачу на этих серверах?

EDIT: Я могу открыть 30 экземпляров excel без проблем, если вручную их открыть с помощью меню «Пуск».

Любые идеи?

Спасибо, L

+0

, но просто интересно, почему бы вам хотеть, чтобы многие процессы? – nawfal

+0

это сервер, который обрабатывает вычисления, и для того, чтобы «кэшировать» вычисления, мы хотим, чтобы большинство из них было в памяти (загрузка их каждый раз занимает слишком много времени). –

+0

Аналогичная ошибка, найденная здесь, с несколькими опциями: http: // stackoverflow .com/questions/881132/retriving-the-com-class-factory-for-component-failed – harlam357

ответ

0

Технически то, что вы делаете, не поддерживается на всех: http://support.microsoft.com/kb/257757

Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.

Тем не менее, из-за незначительных несоответствий между серверами, я считаю, вы работаете в какой-то конфликт/ограничение ресурсов, а не что-то конкретное, чтобы преуспеть. При ограниченном объеме памяти на сервере это может быть просто исчерпание или фрагментация памяти.

+0

Я знаю, что это не поддерживается, но это устаревший код, который нужно поддерживать, поэтому пока я не могу его изменить, например, для служб Excel. Что касается памяти: как возможно, что на 1 концерте он может создать 22 экземпляра, а на 4-х концертах - всего 21? И я могу открыть более 25 файлов excel вручную ... –

+0

Это могут быть лучшие комментарии для вашего исходного вопроса, но: Какая версия excel это? Это 32 или 64 бит? Является ли ваш процесс 32 или 64 бит? –

+0

Это Excel 2010 32 бит ... –

Смежные вопросы