Poderá receber a mensagem de erro de "System.OutOfMemoryException" quando utiliza o SQL Server Reporting Services

Traduções de Artigos Traduções de Artigos
Artigo: 909678 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando utilizar o Microsoft SQL Server 2000 Reporting Services ou utilizar o Microsoft SQL Server 2005 Reporting Services, poderá receber a seguinte mensagem de erro:

Ocorreu um erro interno no servidor de relatório.
Consulte o registo de erro para obter mais detalhes. (rsInternalError) Obter ajuda online
Excepção do tipo foi accionada System.OutOfMemoryException.
Além disso, poderá notar que é registada a seguinte mensagem de erro no ficheiro de registo do SQL Server Reporting Services ou que o registo termina abruptamente:

System.OutOfMemoryException: Excepção do tipo System.OutOfMemoryException foi accionada.
Poderá notar um dos seguintes eventos é registado no registo de aplicação do Microsoft Windows:

Evento 1


aspnet_wp.exe (PID: <PIDNumber>) foi reciclado porque excedia de consumo de memória de <SizeLimit> MB (<Percentage> percentagem de RAM disponível).

Evento 2


Um processo que fornecia serviços ao agrupamento de aplicações 'DefaultAppPool' sofreu um erro fatal de comunicação com o serviço de publicação na World Wide Web. O id de processo era '9132'. O campo de dados contém o número do erro.

Este problema poderá ocorrer em conjunto com uma ou mais dos seguintes sintomas:
  • Quando tenta visualizar um relatório, o relatório nunca é concluído.
  • Um relatório parece deixar de responder.
  • Quando tenta visualizar um relatório, é apresentado um ecrã em branco.
  • Receber a seguinte mensagem de erro:

    Subjacente ligação fechada
  • Subscrições não são entregues.

Causa

Este problema ocorre porque o computador não tem memória suficiente para concluir a operação pedida.

Uma limitação no SQL Server 2000 Reporting Services faz com que determinadas partes do relatório de processamento para ser dependente de memória. Por exemplo, processamento de resultado de consulta e composição de modelo de objecto são dependente de memória.

O computador não tem memória suficiente para concluir a operação pedida quando uma ou mais das seguintes condições se verificar:
  • Um relatório é demasiado grande ou demasiado complexa.
  • A sobrecarga de outros processos em execução é muito alta.
  • A memória física do computador é demasiado pequena.
Um relatório é processado em duas fases. Duas fases são execução e composição. Este problema pode ocorrer durante a fase de execução ou durante a fase de composição.

Se este problema ocorrer durante a fase de execução, este problema ocorre provavelmente porque demasiada memória consumida pelos dados que são devolvidos no resultado da consulta. Além disso, os seguintes factores afectam o consumo de memória durante a fase de execução:
  • Agrupamento
  • Filtragem
  • Agregação
  • Ordenação
  • Código personalizado
Se este problema ocorrer durante a fase de composição, a causa está relacionada com a informação que o relatório apresenta e a forma como o relatório mostra as informações. Por exemplo, os seguintes factores afectam o consumo de memória durante a fase de composição:
  • O número e tipos de controlos
  • A relação entre os controlos
  • A formatação
  • A quantidade de dados que são apresentados
Para obter mais informações sobre o componente de relatório processador, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa179471(SQL.80).aspx

Resolução

Para resolver este problema, utilize um dos seguintes métodos.

Método 1

Adicione suficiente memória física ao computador.

Nota Se tiver mais do que 2 gigabytes (GB) de memória, pode activar o / 3 GB mudar no ficheiro Boot.ini para um melhor desempenho. Para obter mais informações sobre como utilizar o parâmetro/3 GB no SQL Server, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
274750Como configurar o SQL Server para utilizar mais de 2 GB de memória física

Método 2

Relatórios de agenda para executar em off-hours quando forem inferiores restrições de memória.

Método 3

Ajustar a MemoryLimit definição em conformidade.

Nota Quando compor um relatório através da Web de serviços de relatório serviço, o serviço Web de serviços de relatório obtém a definição MemoryLimit do ficheiro Machine.config. No entanto, um relatório agendado é composto pelo serviço do Windows do servidor de relatórios. O relatório do Windows Server o serviço obtém a definição MemoryLimit do ficheiro RSReportServer.config.

Para mais informações sobre a definição MemoryLimit, consulte a secção "Mais informação".

Método 4

Actualizar para uma versão de 64 bits do Microsoft SQL Server 2005 Reporting Services.

Método 5

Recriar o relatório. Para o fazer, utilize um dos seguintes métodos.

Método um

Recriar as consultas de relatório. Pode reduzir o consumo de memória ao redesenhar as consultas de relatório das seguintes formas:
  • Devolve menos dados nas consultas de relatório.
  • Utilize uma restrição melhor na cláusula WHERE de consultas relatório.
  • Mova agregações complexas para a origem de dados.

Método B

Exportar o relatório para um formato diferente. Pode reduzir o consumo de memória, utilizando um formato diferente para apresentar o relatório. A seguinte tabela lista vários formatos de exportação de ordem do maior consumo de memória para o menor consumo de memória.
Reduzir esta tabelaExpandir esta tabela
FormatoDescrição
Microsoft ExcelCompõe um relatório no Excel
Imagem (TIFF)Compõe um relatório como uma imagem estática num formato orientado por página
PDFCompõe um relatório no Portable Document Format (PDF)
HTMLCompõe o relatório em HTML para um browser
CSVCompõe um relatório no formato delimitado por vírgulas; o relatório é aberto numa ferramenta de visualização que está associada com formatos de ficheiro CSV
XMLCompõe um relatório no XML; abre o relatório num browser
Nota Se não for aplicada uma transformação XSLT, este formato irá consumir menos memória do que consome o formato CSV.

Método C

Simplifica a estrutura do relatório. Pode reduzir o consumo de memória, simplificando a estrutura do relatório das seguintes formas:
  • Inclua menos dados regiões ou controlos no relatório.
  • Utilize um relatório de drillthrough para apresentar detalhes.
Além disso, se o objectivo do relatório estiver apenas a recolha de dados, pode utilizar outros produtos da Microsoft para obter um melhor desempenho. Por exemplo, pode utilizar o Data Transformation Services (DTS) ou SQL Server 2005 Integration Services.

Exemplo

O exemplo seguinte demonstra como resolver este problema. Considere o seguinte exemplo:
  • Não pode ser composto um relatório que devolve 160 páginas no Gestor de relatórios no formato PDF e no formato do Excel. O relatório até ao momento pode exceder 250 páginas quando é utilizado um tamanho de página de 8,5 por 11 polegadas.
  • A origem de dados para o relatório devolve 500 megabytes (MB) de dados para o servidor de relatório. Normalmente, o SQL Server 2000 Reporting Services Requer duas a três vezes a quantidade de memória que é utilizada pelo conjunto de dados. Por conseguinte, o SQL Server 2000 Reporting Services requer quase 1,5 GB de memória para compor o relatório.
Para resolver o problema neste exemplo, recriar o relatório para que o mapa mostra dados de sumário apenas para um conjunto limitado de valores de filtro. Além disso, certifique-se de que a agregação ocorre na consulta à base de dados que solicita dados do relatório e que a agregação não está no relatório propriamente dito. Estes métodos ajudam a reduzir significativamente a quantidade de dados que são devolvidos para o servidor de relatório. Por conseguinte, o relatório é apresentado mais rapidamente e com êxito.

Mais Informação

Quando utiliza o SQL Server 2000 Reporting Services, poderá detectar um problema de relacionadas com a memória de mensagens em fila que é causado por uma das seguintes condições de erro:
  • É desencadeado erro System.OutOfMemoryException.
  • São atingidos os limites de memória.
A principal diferença entre as condições de erro é o nível no qual as condições de erro são detectadas e processadas.

O erro System.OutOfMemoryException é um erro que é accionado pelo SQL Server 2000 Reporting Services quando uma operação pede mais memória do sistema e o sistema não consegue fornecer a memória. Quando este erro ocorre, SQL Server 2000 Reporting Services encerra o processo de uma forma insegura. O encerramento não é seguro porque o SQL Server 2000 Reporting Services partilha recursos entre executar pedidos. Por conseguinte, SQL Server 2000 Reporting Services não garante que são ainda seguros para todos os pedidos de dados.

Os limites de memória são um conjunto de definições para ajudar a proteger o sistema de destabilizing potencialmente condições. Por exemplo, a memória limites ajuda a impedir que um servidor de relatórios processar a utilização de demasiada memória. Os limites de memória são especificados através da definição de MemoryLimit e através da definição de MaximumMemoryLimit que estão definidos no ficheiro RSReportServer.config. Quando são atingidos os limites de memória, erros são desencadeados pelo Microsoft .NET Framework antes de SQL Server 2000 Reporting Services, na realidade, ficar sem memória.

Pode compor um relatório a partir do Web site ou de uma tarefa agendada. Assim, as condições de erro poderão ocorrer em dois ambientes diferentes no SQL Server 2000 Reporting Services. Os ambientes são os seguintes:
  • O serviço Web de serviços de relatório
  • O serviço de relatório Server Windows
Por conseguinte, as seguintes combinações de ambientes e condições de erro existem.

O serviço Web de serviços de relatório e o erro de System.OutOfMemoryException

Excepção mensagens e mensagens de encerramento que são semelhantes às seguintes mensagens de são registadas no ficheiro de registo do SQL Server 2000 Reporting Services (ReportServerService_ <timestamp>.log):

w3wp! biblioteca! 1b3c! 07/11/2005-10:38:00:: electrónico erro: excepção encontrado System.OutOfMemoryException: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: excepção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi accionada. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: excepção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi accionada. ---> System.OutOfMemoryException: excepção do tipo System.OutOfMemoryException foi accionada.

w3wp! biblioteca! 1b3c! 07/11/2005-10:38:00:: electrónico erro: terminar o processo de trabalho
Nota Por predefinição, o ReportServerService_ <timestamp> ficheiro .log encontra-se na seguinte localização:
\Microsoft SQL Server\ <Instance of SQL Server> \Reporting Services\LogFiles
Além disso, são registados eventos semelhantes ao seguinte evento no registo de aplicações:


Tipo de evento: Aviso
Origem do evento: W3SVC
Categoria do evento: nenhum
ID de evento: 1011
Data: Date
Hora: Time
Utilizador: N/d
Computador: ComputerName
Descrição:
Um processo que fornecia serviços ao agrupamento de aplicações 'DefaultAppPool' sofreu um erro fatal de comunicação com o serviço de publicação na World Wide Web. O id de processo era '9132'. O campo de dados contém o número do erro.

SQL Server 2000 Reporting Services não consegue processar correctamente este erro. O serviço Web de serviços de relatório identificou a excepção e encerra o processo. Tem a reenviar o pedido.

Para resolver este problema, pode adicionar mais memória física para o sistema ou reduzir o consumo de memória de outros processos.

Idealmente, pode ajustar a definição MemoryLimit ou a definição de Agrupamento de aplicações do Microsoft Internet Information Services (IIS) 6.0, de modo a que se encontra um erro antes de ocorre a situação de memória esgotada. Por conseguinte, o processo é distribuído com mais correctamente. Tem a experimentar as definições, e não existe nenhuma garantia de que irá sempre atingir os limites de memória primeiro.

O serviço Web de serviços de relatório e os limites de memória

As mensagens são registadas no registo de eventos do Windows e no ficheiro de registo de SQL Server 2000 Reporting Services. O ficheiro de registo de serviço Web de serviços de relatório indica que o processo está a ser encerrado. No entanto, o SQL Server 2000 Reporting Services não controla o encerramento e não é possível registar as informações de erro sobre o encerramento.

Poderá notar um dos seguintes eventos é registado no registo de aplicações:

Evento 1


aspnet_wp.exe (PID: <PIDNumber>) foi reciclado porque excedia de consumo de memória de <SizeLimit> MB (<Percentage> percentagem de RAM disponível).

Evento 2


Um processo de trabalho com o id de processo do agrupamento de aplicações '2420' servir 'DefaultAppPool' pediu uma reciclagem porque atingiu o respectivo limite de memória virtual.

Quando são atingidos os limites de memória, o Microsoft ASP.NET ou no IIS 6.0 processa este erro e encerra o serviço Web de serviços de relatório. Os limites de memória estão todas especificados pelo ASP.NET ou pelo IIS 6.0 e não são controlados pelo SQL Server 2000 Reporting Services.

Pode alterar os limites de memória em de <processmodel> secção no ficheiro Machine.config.

Nota Se estiver a executar o IIS 6.0 no modo nativo, Machine.config ficheiro não é utilizado. Os limites de memória são controlados pelas propriedades do agrupamento de aplicações no IIS 6.0.

Para obter mais informações sobre a configuração de memória no ASP.NET e IIS 6.0, visite os seguintes Web sites da MSDN:

O serviço de relatório Server Windows e o erro de System.OutOfMemoryException

Relatórios não são entregues numa partilha de ficheiros ou entregues a destinatários subscritos. Quando compor agendada processo reinicia automaticamente, o processo tenta executar novamente a subscrição mesma como parte do processo de recuperação. São registadas mensagens de erro semelhantes às seguintes mensagens de erro no ficheiro de registo do SQL Server 2000 Reporting Services:

ReportingServicesService! biblioteca! 618! 7/9/2003-16: 06: 01:: estado: erro: excepção do tipo System.OutOfMemoryException foi accionada.
ReportingServicesService! notificação! 618! 7/9/2003-16: 06: 01:: erro emitido pelo fornecedor de entrega: System.OutOfMemoryException: excepção do tipo System.OutOfMemoryException foi accionada.
ReportingServicesService! notificação! 618! 7/9/2003-16: 06: 01:: notificação 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6 concluída. FALSE, o estado de êxito:: Erro: excepção do tipo System.OutOfMemoryException foi accionada., DeliveryExtension: correio electrónico do servidor de relatório, mapa: factura, tentativa 0
ReportingServicesService! dbpolling! 618! 7/9/2003-16: 06: 01:: NotificationPolling terminar o processamento item 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6
ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09: 30:: i INFO: memória restrição app domínio Reciclagem pedida
ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09: 30:: i INFO: o serviço do domínio predefinido de Reciclagem
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09: 30:: EventPolling consulta o serviço parado
ReportingServicesService! dbpolling! 87 c! 7/9/2003-16: 09: 30:: EventPolling thread de heartbeat para parar a sair.
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09: 30:: NotificationPolling consulta serviço parado
ReportingServicesService! dbpolling! 880! 7/9/2003-16: 09: 30:: NotificationPolling heartbeat thread sair para parar.
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09: 30:: SchedulePolling consulta o serviço parado
O serviço de relatório Server Windows identificou a excepção e encerra o processo. Este não é um processo sem problemas e outros pedidos que estão no processo são perdidos.

Não é possível configurar quaisquer definições para impedir que este problema. Este problema é afectado pela quantidade de memória no computador e pelo consumo de memória de outros processos.

Para resolver este problema, pode adicionar mais memória física para o computador ou reduzir o consumo de memória de outros processos.

O serviço do Windows Server de relatório e os limites de memória

Relatórios não são entregues numa partilha de ficheiros ou entregues a destinatários subscritos. A propriedade status de uma subscrição tem o valor de "Interrupção threads". Erro são registadas mensagens semelhantes às seguintes mensagens de erro no ficheiro de registo de SQL Server 2000 Reporting Services:

ReportingServicesService! reportrendering! 17a8! 09/28/2005-16: 10: 12:: electrónico erro: deitar Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: excepção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi accionada., INFO: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: excepção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi accionada. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: excepção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi accionada. ---> System.Threading.ThreadAbortException: thread a ser abortado.
ReportingServicesService! runningjobs! 17a8! 09/28/2005-16: 10: 12:: I INFO: CancelableJobExecution.Execute detectada algumas outras excepções de abortar thread
ReportingServicesService! biblioteca! 17a8! 09/28/2005-16: 10: 12:: i INFO: inicializar EnableExecutionLogging como 'True' como especificado nas propriedades de sistema do servidor.
ReportingServicesService! runningjobs! 1810! 09/28/2005-16: 10: 12:: i INFO: CancelableJobExecution.Execute detectada algumas outras excepções de abortar thread
ReportingServicesService! biblioteca! 1810! 09/28/2005-16: 10: 12:: i INFO: inicializar EnableExecutionLogging como 'True' como especificado nas propriedades de sistema do servidor.
ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10: 12:: NotificationPolling já não processar item 6e786bb5-3e4d 462a 92 fc-2942e6aec007, irá ser requeued
ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10: 12:: thread de trabalho de fila detectada excepção não processada: System.Threading.ThreadAbortException: thread a ser abortado.
em Microsoft.ReportingServices.Library.NotificationQueueWorker.HandleNotification(QueueItem item)
em Microsoft.ReportingServices.Library.NotificationQueueWorker.QueueWorker(QueueItem item)
em Microsoft.ReportingServices.Library.QueuePollWorker.WorkItemStart (estado do objecto)
Nota Estas mensagens são seguidas de uma extremidade abrupto para o ficheiro de registo.

O serviço de relatório Server Windows tenta concluir pedidos existentes. Além disso, o serviço de relatório Server Windows monitoriza as suas próprias definições de configuração para se certificar de que uma operação pedida não excede os limites de memória. Se uma operação pedida exceder os limites de memória, o serviço de relatório Server Windows pára o processo. O relatório do Windows Server o serviço coloca automaticamente os trabalhos falhou numa lista de tarefas de arranque. Quando o serviço de relatório Server Windows for reiniciado, o serviço de relatório Server Windows tenta executar as tarefas novamente.

Duas definições no ficheiro RSReportServer.config afectam a configuração de memória. As entradas específicas são a definição de MaximumMemoryLimit e a definição MemoryLimit em de <service> tag.

Estes valores representam uma percentagem de memória física. Se o consumo de memória existentes pedidos de atingir a percentagem especificada pela definição MemoryLimit, o serviço de relatório Server Windows pára a tomar pedidos adicionais. No entanto, se continuar pedidos que estão actualmente em curso. Novos pedidos são aceites novamente após libertar memória inferior a percentagem especificada pela definição MemoryLimit.

Se o consumo de memória existentes pedidos de atingir a percentagem especificada pela definição MaximumMemoryLimit, o domínio de aplicação de servidor de relatório é terminado.

Estas definições imitar os limites de memória em de <processmodel> secção no ficheiro Machine.config e funcionam eficazmente da mesma forma. Estas definições emprestar consistência entre o serviço Web de serviços de relatório e o serviço do Windows Server de relatório.

Referências

Para mais informações, consulte os seguintes tópicos no SQL Server Books Online:
  • Como adicionar uma ligação de relatório drillthrough (relatório Designer)
  • Exportar relatórios
  • Ficheiro de configuração de RSReportServer
  • Domínios de aplicação de servidor de relatório de Reciclagem

Propriedades

Artigo: 909678 - Última revisão: 24 de novembro de 2009 - Revisão: 3.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Reporting Services
  • Microsoft SQL Server 2005 Reporting Services
Palavras-chave: 
kbmt kbexpertiseadvanced kbprb KB909678 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 909678

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com