(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Предельное количество заданий по обработке отчетов в Crystal Reports

Введение

Когда веб-приложение, разработанное с использованием Crystal reports SDK для Visual Studio .NET, обрабатывает большое задание печати или большое число отчетов, может появиться следующее сообщение об ошибке:

"System.Exception: Load report failed. System.Runtime.InteropServices.COMException (0x80041016): The maximum report processing jobs limit configured by your system administrator has been reached."

"Системное исключение: Сбой загрузки отчета. System . Runtime . InteropServices . COMException (0 x 80041016): Достигнуто предельное количество заданий обработки отчетов, сконфигурированное Вашим системным администратором".

Обычно это сообщение сопровождается ошибкой "Load Report Failed".

В данной статье обсуждаются вероятные причины ошибки и возможные решения.

Применимо к:

Crystal Reports 10.0 до Crystal Reports 2008 (12.0.x), когда они работают в соответствующих версиях среды Visual Studio.NET.

Возможные причины

Сообщение об ошибке возникает потому, что веб-приложение превысило принятое по умолчанию предельное значение 75 для задания печати, принятое для механизма Crystal Reports reporting engine.  Или, другими словами, процессор подготовки отчетов работал с высокой нагрузкой. Существует ряд факторов, вызывающих сбой в работе процессора отчетов от высокой нагрузки, и для каждого случая применяется отдельное решение, как показано ниже.

Вопросы, связанные с программированием

Корректное программирование подразумевает полный контроль над любыми объектами и соответственно их удаление, когда в них больше нет необходимости. Это справедливо для любого объекта, который поддерживает интерфейс IDisposable.

  • Процессору отчетов передано слишком много заданий печати

Начиная с версии Crystal Reports 10, процессор отчетов был оптимизирован с точки зрения повышения производительности обработки отчетов. Существуют специальные разделы реестра, контролирующие эту оптимизацию. По умолчанию, предельное количество заданий печати установлено равным 75. Когда приложение работает с большой нагрузкой, может быть достигнуто предельное значение заданий печати, равное 75, и это может вызвать ошибку работы приложения. Обратите внимание, что задание печати включает в себя обработку объектов главного отчета, подотчетов и объектов текущего сеанса работы (например, выполнение детализации, разбивка на страницы, осуществление поиска и т.д.). Поэтому при обработке одного отчета может быть превышено предельное значение 75 для задания печати. Рассмотрим отчет, который возвращает 75 записей, при этом подотчет помещен в раздел подробностей и, следовательно, присутствует в каждой записи. Для такого отчета потребуется обработать 75 подотчетов плюс главный отчет, в результате получим 76 заданий печати, а это вызовет появление ошибки.

  • Слишком большое количество запросов от пользователей на выдачу отчетов

Несмотря на тесную связь с причиной "Процессору отчетов передано слишком много заданий печати", существует некоторое отличие. Если слишком большое количество пользователей обратилось с запросами к процессору запросов, то последний попытается обработать большее количество заданий печати, чем то, на которое он был сконфигурирован. В качестве примера рассмотрим трех пользователей, каждый из которых сделал запрос на выдачу отчета с 25 подотчетами. Это потребует от процессора отчетов обработать 78 заданий печати;

(25 подотчетов * 3 пользователя) + (3 главных отчета)

в результате это вызовет появление ошибки превышения предельного количества заданий печати.

  • Достигнут предел возможностей аппаратного обеспечения

Низкопроизводительный конечный сервер с маломощным CPU достигнет предела своих возможностей быстрее, чем высокопроизводительный конечный сервер с несколькими CPU.

  • Неправильно подобранное ПО

Приложение Crystal Reports имеет ограниченные возможности обработки. При проектировании веб-приложения с использованием Crystal Reports SDK для Visual Studio .NET учитывайте потенциальную нагрузку, с которой будет работать процессор отчетов. При высокой нагрузке следует рассмотреть возможность использования более гибких расширяемых решений, например Crystal Reports Report Application Server.

Решения

Решение проблемы технического ограничения количества заданий печати зависит от конкретных обстоятельств. При определенных обстоятельствах может применяться несколько возможных решений или может возникнуть необходимость в реализации комбинации решений.

  • Код

Освобождение от ненужных объектов

Проверьте, что вызван метод .Dispose и .Close, когда объект report больше не нужен. Кроме того, убедитесь, что эти методы вызваны не только для Crystal Reports, но и для FileStream, Database Connections, наборов данных или для любого другого объекта, который поддерживает интерфейс IDisposable.

Используйте сеансы

1.     Создайте подпрограмму, которая задает свойство ReportSource средства просмотра и отображает отчет в нем, и добавьте следующую строку кода.

2.     В событие Page_Load добавьте следующие строки кода. Эти строки кода вызовут захват объекта report из объекта Session и зададут свойство ReportSource средства просмотра в течение postback.

Теперь при запуске проекта и при перемещении по страницам отчета в средстве просмотра будет отображаться каждая страница без потери источника отчета, при этом не допускается переполнение стека и памяти и возникновение ошибки превышения предельного значения 75. Однако все равно необходимо закрыть и освободиться от ненужного объекта report. Это необходимо сделать либо при закрытии окна браузера, либо если пользователь переходит к другой странице.

  • Увеличение предельного принятого по умолчанию количества заданий печати, равного 75

Такой способ может временно приостановить возникновение ошибки, но с ростом нагрузки эта ошибка снова начнет проявляться или, что еще хуже, система может зависнуть, и единственным способом восстановления работоспособности будет перезагрузка системы. Для приложения, использующего Crystal reports SDK, раздел реестра "InprocServer" задает предельно допустимое число заданий печати, которое может обработать процессор отчетов.

ПРЕДУПРЕЖДЕНИЕ: Следующее решение предполагает редактирование реестра. Некорректное использование редактора реестра может привести к серьезным проблемам, что может потребовать переустановки операционной системы Microsoft Windows. Воспользуйтесь редактором реестра на свой страх и риск. Настоятельно рекомендуется сделать резервную копию файлов реестра перед редактированием реестра. Для получения справочной информации о редактировании разделов реестра обратитесь к разделу справочной системы 'Changing Keys And Values'  ("Изменение ключей и значений") в редакторе реестра (Regedit.exe).

Примечание: Принятое по умолчанию значение 75 обеспечивает оптимальную производительность в протестированных средах. Изменение этого значения может повлиять на производительность системы.

Для изменения значения параметра PrintJobLimit выполните следующие шаги:

1) Щелкните мышью на кнопках Start > Run. Появится диалоговое окно Run.

2) Наберите команду "regedit" в поле Open. Щелкните на кнопке OK. Появится окно Registry Editor.

Перейдите к соответствующему значению раздела реестра, как показано ниже.

Для Crystal Reports 10.0.x

HKEY_LOCAL_MACHINE\SOFTWARE\Crystal Decisions\10.0\Report Application Server\ InprocServer\PrintJobLimit

Для Crystal Reports 10.2 (Visual Studio .NET 2005 bundle)

HKEY_LOCAL_MACHINE\SOFTWARE\Crystal Decisions\10.2\Report Application Server\ InprocServer\PrintJobLimit

Для Crystal Reports Basic for Visual Studio 2008 (Visual Studio .NET 2008 bundle)

HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\10.5\report Application server\InProcServer\ PrintJobLimit\PrintJobLimit

Для Crystal Reports XI Release 1 (11.0.x)

HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.0\Report Application Server\InprocServer\PrintJobLimit

Для Crystal Reports XI Release 2 (11.5.x)

HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.5\Report Application Server\InprocServer\PrintJobLimit

Для Crystal Reports 2008 (12.x.x)

HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 12.0\Report Application Server\InprocServer\PrintJobLimit

При установке значения PrintJobLimit равным "-1" удаляются все ограничения на задания печати.


  • Техническое обеспечение

Серверы с дополнительной памятью, с двойным или даже четверным ядром CPU являются опциональными. Также заслуживает рассмотрения возможность использования веб-ферм. Для получения дополнительной информации о веб-фермах (web-farms) обратитесь к веб-ресурсу для разработчиков Microsoft MSDN Visual Studio 2008 Developer Center; "How Do I Use Crystal Reports in a Web Farm or Web Garden?" (Как я могу использовать Crystal Reports в Web Farm или Web Garden?).

  • Решение с большими возможностями расширения

Рассмотрите возможность перехода к системе с более гибкими средствами расширения, например Crystal Reports Report Application Server или Business Objects Enterprise.

Подробнее о продуктах компании SAP Business Objects



 Распечатать »
 Правила публикации »
  Обсудить материал в конференции SAP Business Objects »
Написать редактору 
 Рекомендовать » Дата публикации: 18.11.2010 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
SAP® Crystal Dashboard Design Departmental 2016 WIN INTL NUL
SAP® Crystal Reports 2016 WIN INTL NUL
SAP Crystal Server 2011 WIN INTL 5 CAL License
SAP® Crystal Presentation Design 2016 WIN INTL NUL
SAP Crystal Reports 2008 INTL WIN NUL License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Реестр Windows. Секреты работы на компьютере
СУБД Oracle "с нуля"
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Ищу программиста для написания программы (41)
Ищу программиста ,владеющего Вижуал Бэйсик и программированием в Экселе, для написания...
 
Ищу программиста С# (1)
Напечатать последовательность машинных команд, необходимых для вычисления выражения, задаваемого...
 
Пишу программы на заказ профессионально (3147)
Пишу программы на заказ на языках Pascal (численные методы, списки, деревья, прерывания) под...
 
Разработка программ базы данных (26)
Написание прикладных компьютерных программ (базы данных) на заказ. Разработка корпоративных...
 
Написание программ для микроконтроллеров AVR, PIC, ARM, STM32 (9)
Напишу любую программу на любом искусственном языке. Профессиональный программист. Основная...
 
 
 



    
rambler's top100 Rambler's Top100