Исключение Crystal Reports: достигнут максимальный предел заданий обработки отчетов, настроенный системным администратором. - PullRequest
10 голосов
/ 06 марта 2012

Я столкнулся с очень ошибочной проблемой: в приложении ASP.NET после просмотра одного и того же отчета много раз одновременно я получил следующее исключение:

Максимальный лимит заданий на обработку отчетов, настроенный системным администраторомбыло достигнуто.

Подождите, я знаю, что есть множество решений, но все они не работают со мной.

  1. Я поставил ReportDocument.Close();ReportDocument.Dispose ();в событии CrystalReportViewer_Unload и по-прежнему выдает исключение.

    Private Sub CrystalReportViewer1_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Unload reportFile.Close() reportFile.Dispose() GC.Collect() End Sub

  2. Я изменяю реестр PrintJobLimit в HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Report Application Server\InprocServer и HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Report Application Server\Server в -1 даже до 9999и по-прежнему выдает исключение.

Вот фрагмент кода, в который я вызываю свой отчет:

 Table_Infos = New TableLogOnInfos()
                Table_Info = New TableLogOnInfo()
                Con_Info = New ConnectionInfo()

                With Con_Info
                    .ServerName = ConfigurationManager.AppSettings("server_name")
                    .DatabaseName = ConfigurationManager.AppSettings("DB")
                    .UserID = user_name
                    .Password = pass_word
                    .Type = ConnectionInfoType.SQL
                    .IntegratedSecurity = False
                End With

                Table_Info.ConnectionInfo = Con_Info

                If Session("recpt_lang") = "Arabic" Then
                    reportFile.Load(Server.MapPath("/Reports/") & "collectrecpt_new_ar.rpt")
                ElseIf Session("recpt_lang") = "English" Then
                    reportFile.Load(Server.MapPath("/Reports/") & "collectrecpt_new.rpt")
                End If

                For Each mytable In reportFile.Database.Tables

                    mytable.ApplyLogOnInfo(Table_Info)

                Next

                CrystalReportViewer1.ReportSource = reportFile
                CrystalReportViewer1.SelectionFormula = Session("SelectionForumla")
                CrystalReportViewer1 = Nothing

Ответы [ 11 ]

12 голосов
/ 06 марта 2012

В конце концов, вы должны удалить свой экземпляр отчета. Если вы утилизируете отчет после его показа, вы никогда не увидите ошибку «Максимальный лимит заданий обработки отчетов, настроенный вашим системным администратором, был достигнут снова».

  Dim report1 As rptBill = clsBill.GetReport(billNumber)

  rpt.Print()

  'Cleanup the report after that!
  rpt.Close()
  rpt.Dispose()
8 голосов
/ 06 марта 2012

Я бы порекомендовал переместить ваш код close / dispose / gc.collect вне этого процесса выгрузки. Другими словами:

  1. Отчет о загрузке
  2. Назначить элемент управления Viewer
  3. Показать отчет в Viewer Control
  4. Закрыть окно просмотра и выгрузить (полностью)
  5. Затем закройте / утилизируйте / gc.collect вне любого управляющего кода средства просмотра

Полагаю, элемент управления просмотра не полностью закрывается при очистке отчета.

Кристалл очень трудоемкий процесс и очень привередливый.

2 голосов
/ 17 июня 2016

Документ Crystal Report реализует интерфейс IDisposable. Поэтому все, что вам нужно сделать, это заключить экземпляр отчета в оператор using. Он будет автоматически закрыт и утилизирован после завершения оператора using. Вы можете написать что-то вроде этого:

using(var report = GetInvoiceReport())
{
     // your logic here
}

или (зависит от вашего контекста):

using(var report = new ReportDocument())
{
     // your logic here
}
2 голосов
/ 15 декабря 2015

Привет Я слишком поздно, чтобы ответить на него, все ответы работают, и я видел, но в случае, если вы все еще сталкиваетесь с той же проблемой и ошибкой, пожалуйста, перейдите в папку TEMP в каталоге "windows" и удалите все экземпляры.хрустального отчета.Я говорю это потому, что все вышеперечисленные опции будут работать, но вы по-прежнему находитесь в максимальной досягаемости, поэтому сначала удалите все экземпляры, а затем примените все приведенные выше предложения.спасибо

1 голос
/ 02 июня 2018

В моем случае в отчете было 4 подотчета ...

Для меня было решено изменить значение «PrintJobLimit» с 75 на 500 в следующих путях Regedit:

  • \ HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ SAP BusinessObjects \ Crystal Reports для .NET Framework 4.0 \ Сервер приложений отчетов \ InprocServer

  • \ HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ SAP BusinessObjects \ Crystal Reports для .NET Framework 4.0 \ Сервер приложений отчетов \ Сервер

1 голос
/ 10 апреля 2017

Вы должны Dispose ваш экземпляр отчета в конце концов.Если вы Dispose сообщите о нем после его показа, вы никогда не увидите ошибку:

Максимальный лимит заданий обработки отчетов, настроенный вашим системным администратором, достигнут

Код:

Dim report1 As rptBill = clsBill.GetReport(billNumber)

rpt.Print()

'Cleanup the report after that!
rpt.Close()
rpt.Dispose()
1 голос
/ 02 марта 2016

Я работал на локальном сервере отчетов.Я разместил свое веб-приложение на другом компьютере.Когда я получил такую ​​ошибку, я просто сделал IISRESET и теперь работает нормально.

Попробуйте, это может помочь вам.

1 голос
/ 24 марта 2015

Убедитесь, что вы используете модель PUSH для отображения своих отчетов.Затем вам нужно сделать одно изменение в реестре вашего Сервера: Следуйте по пути:

"HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Report Application Server\InprocServer" 

, и вы увидите элемент «PrintJobLimit», и вы увидите, что его значение по умолчанию равно 75. Это означает, что сервер можетобрабатывать только 75 отчетов одновременно.Не беспокойтесь об этом и просто измените значение на -1

0 голосов
/ 14 января 2019

Я знаю, что этот поток старше, но если вы сконфигурируете параметр пула приложений "Переработка ...", чтобы он перерабатывал, скажем, 180 минут вместо 1740 минут (по умолчанию), это может высвободить необходимые ресурсы.

0 голосов
/ 18 января 2018

Убедитесь, что у пользователя IIS есть достаточные права для удаления файлов, присутствующих в папке "c: / windows / temp".

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

...