none
Erro ao exportar relatório para PDF/CSV - outros formatos funciona

    Pregunta

  • Olá!

    Há um tempo nos deparamos com erros ao exportar relatórios para PDF e ao analisar o log temos o seguinte erro:

    library!ReportServer_0-39!1f3c!05/15/2012-11:20:30:: i INFO: RenderFromSession('/Relatorio/RelatorioQualquer) reportrendering!ReportServer_0-39!1f3c!05/15/2012-11:20:30:: e ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingException: Erro durante a renderização do relatório., ; Info: Microsoft.ReportingServices.ReportProcessing.UnhandledReportRenderingException: Erro durante a renderização do relatório. ---> Microsoft.ReportingServices.OnDemandReportRendering.ReportRenderingException: Erro durante a renderização do relatório. ---> System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.PageStructStaticMemberCell.AddToPageCHContent(List`1 rowHeights, ScalableList`1 columnInfo, Int32 rowIndex, Int32 colIndex, Boolean isLTR, RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double pageRight, Double pageBottom, RepeatState repeatState, Boolean& hasLabels) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.AddToPage(RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double pageRight, Double pageBottom, RepeatState repeatState) at Microsoft.ReportingServices.Rendering.HPBProcessing.PageItemContainer.AddToPage(RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double pageRight, Double pageBottom, RepeatState repeatState) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.RowInfo.AddToPageContent(ScalableList`1 columnInfo, Int32& colsOnPage, Boolean isLTR, Boolean pinnedToParentCell, RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double pageRight, Double pageBottom, RepeatState repeatState) at Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.AddToPage(RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double pageRight, Double pageBottom, RepeatState repeatState) at Microsoft.ReportingServices.Rendering.HPBProcessing.PageItemContainer.AddToPage(RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double pageRight, Double pageBottom, RepeatState repeatState) at Microsoft.ReportingServices.Rendering.HPBProcessing.SubReport.AddToPage(RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double pageRight, Double pageBottom, RepeatState repeatState) at Microsoft.ReportingServices.Rendering.HPBProcessing.PageItemContainer.AddToPage(RPLWriter rplWriter, PageContext pageContext, Double pageLeft, Double pageTop, Double pageRight, Double pageBottom, RepeatState repeatState) at Microsoft.ReportingServices.Rendering.HPBProcessing.Report.NextPage(RPLWriter rplWriter, Int32 page, Int32 totalPages) at Microsoft.ReportingServices.Rendering.HPBProcessing.HPBProcessing.NextPage() at Microsoft.ReportingServices.Rendering.HPBProcessing.HPBProcessing.Init(Report report, PaginationSettings pagination, CreateAndRegisterStream createAndRegisterStream, Hashtable& renderProperties) at Microsoft.ReportingServices.Rendering.HPBProcessing.HPBProcessing..ctor(Report report, PaginationSettings pagination, CreateAndRegisterStream createAndRegisterStream, Hashtable& renderProperties) at Microsoft.ReportingServices.Rendering.ImageRenderer.PDFRenderer.Render(Report report, NameValueCollection deviceInfo, Hashtable renderProperties, CreateAndRegisterStream createAndRegisterStream) at Microsoft.ReportingServices.Rendering.ImageRenderer.RendererBase.Render(Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, Hashtable& renderProperties, CreateAndRegisterStream createAndRegisterStream)

    --- End of inner exception stack trace ---

    Quando o mesmo relatório é exportado para CSV ele é gerado, porém é registrado o seguinte log:

       at Microsoft.Reporting.WebForms.ServerReport.ServerUrlRequest(Boolean isAbortable, String url, Stream outputStream, String& mimeType, String& fileNameExtension)
       at Microsoft.Reporting.WebForms.ServerReport.InternalRender(Boolean isAbortable, String format, String deviceInfo, NameValueCollection urlAccessParameters, Stream reportStream, String& mimeType, String& fileNameExtension)
       at Microsoft.Reporting.WebForms.ServerReport.Render(String format, String deviceInfo, NameValueCollection urlAccessParameters, Stream reportStream, String& mimeType, String& fileNameExtension)
       at Microsoft.Reporting.WebForms.ServerModeSession.RenderReport(String format, Boolean allowInternalRenderers, String deviceInfo, NameValueCollection additionalParams, Boolean cacheSecondaryStreamsForHtml, String& mimeType, String& fileExtension)
       at Microsoft.Reporting.WebForms.ExportOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse response)
       at Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context)
       at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
    library!ReportServer_0-39!1d88!05/15/2012-14:58:01:: i INFO: RenderFromSession('/Relatorio/RelatorioQualquer')
    processing!ReportServer_0-39!1d88!05/15/2012-14:58:01:: e ERROR: An error has occurred while processing a sub-report. Details: Object reference not set to an instance of an object. Stack trace:
       at Microsoft.ReportingServices.OnDemandProcessing.OnDemandProcessingContext.SetupObjectModels(OnDemandMode mode, Boolean needDeepCopyPath, Int32 moveNextInstanceIndex, String scopeName)
       at Microsoft.ReportingServices.OnDemandProcessing.OnDemandProcessingContext.SetupContext(IInstancePath rifObject, IReportScopeInstance romInstance, Int32 moveNextInstanceIndex)
       at Microsoft.ReportingServices.OnDemandReportRendering.SubReport.RetrieveSubreport()
    webserver!ReportServer_0-39!1d88!05/15/2012-14:58:02:: i INFO: Processed report. Report='/Relatorio/RelatorioQualquer', Stream=''

    O erro ocorre, de forma intermitente, provavelmente depende dos dados contidos nos relatório. Entretanto, quando cada subreport é executado separadamente, nenhum erro ocorre. É só quando unimos todos num único relatório que o problema aparece.

    Alguém sabe a possível causa do problema? Margem? Quebra-de-página? Dados nulos ou em branco?

    Já tentei diversas soluções e nada. Também não achei nenhum outro forum com a solução.

    Obrigado.

    martes, 15 de mayo de 2012 18:03

Respuestas

  • Victor,

    O Rs vai processor de forma diferente um relatorio quando usado como subreport ou como main report, por isso voce pode nao conseguir reproduzir o problema sem subreport.

    No post original voce disse que ele gera o relatorio em csv, mas registra o erro? Isso nao deveria acontecer, se o erro foi registrado o relatorio. Como disse acima, esse problema talvez seja resolvido alterando a estrutura do relatorio, invelizmente nao tenho como apontar uma propriedade que se voce alterar vai fazer funcionar, pode ser um conjunto de coisas.

    Recomendo abrir o problema no connect, pois podem recomendar um workaround ou hotfix.

    att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    lunes, 21 de mayo de 2012 16:49

Todas las respuestas

  • Victor,

    Você esta utilizando o Adobe Reader na sua máquina?

    Existe algumas incompatibilidades de versão do Adobe Reader para o SQL Server 2008.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    miércoles, 16 de mayo de 2012 14:34
  • Junior,

    Usamos a versão 8.1.2. Sabe qual versão é mais compatível ou onde posso encontrar essa informação?

    Obrigado.

    miércoles, 16 de mayo de 2012 14:41
  • Victor,

    Se não estou enganado a versão 9 é a mais indicada.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    miércoles, 16 de mayo de 2012 14:54
  • A versao do adobe nao influencia a geracao de relatorios, inclusive adobe reader nao precisa ser instalado no servidor. O maximo que o acrobat vai influenciar eh na hora de abrir o relatorio na maquina do cliente.

    Victor, qual versao do SSRS voce esta usando? Voce esta usando o ultimo service pack? Se nao tiver recomendo atualizar para o ultimo service pack pois varios desses problemas podem ter sido resolvidos. 

    Att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    miércoles, 16 de mayo de 2012 17:42
  • Boreki,

    Usamos a versão 2008 com o SP1 instalado.

    Obrigado.

    jueves, 17 de mayo de 2012 12:07
  • O ultimo service pack do 2008 eh o SP3, recomendo como primeira alternativa tentar instalar o service pack e ver se o problema ja foi resolvido.

    Caso nao solucione seu problema, existem algumas alternativas que voce pode tentar, como voce disse o problema parece estar relacionado com os dados (e com a estrutura do relatorio), voce pode fazer alteracoes na estrutura no relatorio que nao causam diferencas visuais no relatorio, por exemplo, voce esta usando Subreports, tentar colocar o subreport dentro de um rectangle.

    Voce pode tambem descrever seu problema no connect, um problema parecido eh descrito aqui (lembrando que voce precisa anexar o relatorio no connect para que seu problema possa ser reproduzido):

    https://connect.microsoft.com/SQLServer/feedback/details/679722/ssrs-export-to-pdf-results-in-system-nullreferenceexception

    Att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    jueves, 17 de mayo de 2012 16:26
  • Boreki,

    Então, eu também penso que o Adobe não tem nada de relação na geração do arquivo pelo Reporting Services, mas em diversos locais que eu tive a necessidade de fazer este tipo de procedimento, sem o Adobe instalado não consegui fazer a geração do arquivo.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    viernes, 18 de mayo de 2012 18:51
  • Nao existe necessidade do adobe no servidor, um pdf reader so eh necessario no cliente para abrir o relatorio.

    Como descrito no link http://technet.microsoft.com/en-us/library/dd255291(v=SQL.110).aspx

    " The rendering extension does not require Adobe software to render the report"


    Boreki[MSFT] - SQL Server Reporting Services

    viernes, 18 de mayo de 2012 18:55
  • Boreki,

    A instalação de um novo service pack aqui é inviável, por diversos motivos alheios só a minha área, foi o que meu chefe disse.

    O que acho bem estranho é que quando geramos cada subreport separadamente (nesse caso são 23) nenhum erro acontece. Será que pode ser algum problema com quebra de página? Vi que todos estão com a propriedade KeepTogether marcada como TRUE. Pode ser isso?

    lunes, 21 de mayo de 2012 11:41
  • Victor,

    O Rs vai processor de forma diferente um relatorio quando usado como subreport ou como main report, por isso voce pode nao conseguir reproduzir o problema sem subreport.

    No post original voce disse que ele gera o relatorio em csv, mas registra o erro? Isso nao deveria acontecer, se o erro foi registrado o relatorio. Como disse acima, esse problema talvez seja resolvido alterando a estrutura do relatorio, invelizmente nao tenho como apontar uma propriedade que se voce alterar vai fazer funcionar, pode ser um conjunto de coisas.

    Recomendo abrir o problema no connect, pois podem recomendar um workaround ou hotfix.

    att

    Boreki


    Boreki[MSFT] - SQL Server Reporting Services

    lunes, 21 de mayo de 2012 16:49