Você pode receber a mensagem de erro "System.OutOfMemoryException" quando você usar o SQL Server Reporting Services

Traduções deste artigo Traduções deste artigo
ID do artigo: 909678 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você usar o Microsoft SQL Server 2000 Reporting Services ou usar o Microsoft SQL Server 2005 Reporting Services, você pode receber a seguinte mensagem de erro:

Ocorreu um erro interno no servidor de relatório.
Consulte o log de erro para obter mais detalhes. (rsInternalError) Obter ajuda online
Exceção do tipo System.OutOfMemoryException foi lançada.
Além disso, você pode observar a seguinte mensagem de erro é registrada no arquivo de log do SQL Server Reporting Services ou que o log termina abruptamente:

System.OutOfMemoryException: Exceção do tipo System.OutOfMemoryException foi lançada.
Você pode perceber um dos seguintes eventos é registrado no log do aplicativo do Microsoft Windows:

Evento 1


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

Evento 2


Um processo que atende ao pool de aplicativos 'DefaultAppPool' sofreu um erro fatal de comunicação com o serviço de publicação na Internet. A identificação do processo era '9132'. O campo de dados contém o número do erro.

Esse problema pode ocorrer juntamente com um ou mais dos seguintes sintomas:
  • Quando você tenta exibir um relatório, o relatório nunca é concluído.
  • Um relatório parece parar de responder.
  • Quando você tenta exibir um relatório, uma tela em branco é exibida.
  • Você recebe a seguinte mensagem de erro:

    Subjacente conexão fechado
  • Inscrições não são entregues.

Causa

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

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

O computador não tem memória suficiente para concluir a operação solicitada quando um ou mais das seguintes condições forem verdadeiras:
  • Um relatório é muito grande ou muito complexa.
  • A sobrecarga de outros processos em execução é muito alta.
  • A memória física do computador é muito pequena.
Um relatório é processado em dois estágios. Dois estágios são execução e o processamento. Esse problema pode ocorrer durante o estágio de execução ou durante o estágio de processamento.

Se esse problema ocorre durante o estágio de execução, esse problema ocorre provavelmente porque muita memória consumida pelos dados retornados no resultado da consulta. Além disso, os seguintes fatores afetam o consumo de memória durante o estágio de execução:
  • Agrupamento
  • Filtragem
  • Agregação
  • Classificação
  • Código personalizado
Se esse problema ocorre durante o estágio de processamento, a causa está relacionada a quais informações o relatório exibe e como o relatório exibe as informações. Por exemplo, os seguintes fatores afetam o consumo de memória durante o estágio de processamento:
  • O número e tipos de controles
  • A relação entre os controles
  • A formatação
  • A quantidade de dados são exibidos
Para obter mais informações sobre o componente do processador do relatório, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa179471(SQL.80).aspx

Resolução

Para resolver esse problema, use um dos seguintes métodos.

Método 1

Adicione memória física suficiente para o computador.

Observação Se você tiver mais de 2 gigabytes (GB) de memória, você pode habilitar o / 3 GB alternar no arquivo Boot.ini para melhor desempenho. Para obter mais informações sobre como usar a opção/3 GB no SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento:
274750Como configurar o SQL Server para usar mais de 2 GB de memória física

Método 2

Agendar relatórios para executar em horas de menor movimento quando restrições de memória são inferiores.

Método 3

Ajustar MemoryLimit configuração apropriadamente.

Observação Quando processar um relatório através da Web de serviços Reporting service, serviço da Web de serviços de relatório obtém configuração MemoryLimit do arquivo Machine.config. No entanto, um relatório agendado é processado pelo serviço Report Server Windows. O Report Server Windows serviço obtém a configuração de MemoryLimit de arquivo RSReportServer.config.

Para obter mais informações sobre a configuração de MemoryLimit, consulte a seção "Mais informação".

Método 4

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

Método 5

Recrie o relatório. Para fazer isso, use um dos seguintes métodos.

Método um

Recrie as consultas de relatório. Você pode reduzir o consumo de memória, redimensionando consultas relatório das seguintes maneiras:
  • Retorne menos dados em consultas de relatório.
  • Use uma restrição de melhor na cláusula WHERE de consultas de relatório.
  • Mova as agregações complexas para a fonte de dados.

Método B

Exporte o relatório para um formato diferente. Você pode reduzir o consumo de memória usando um formato diferente para exibir o relatório. A tabela a seguir lista vários formatos de exportação na ordem da maioria dos consumo de memória para menos consumo de memória.
Recolher esta tabelaExpandir esta tabela
FormatoDescrição
Microsoft ExcelProcessa um relatório no Excel
Imagem (TIFF)Processa um relatório como uma imagem estática em um formato de página orientada
PDFProcessa um relatório Portable Document Format (PDF)
HTMLProcessa o relatório em HTML para um navegador
CSVProcessa um relatório no formato delimitado por vírgulas; o relatório é aberto em uma ferramenta de visualização está associada com formatos de arquivo CSV
XMLProcessa um relatório XML; o relatório é aberto em um navegador
Observação Se uma transformação XSLT não for aplicada, este formato consumirá menos memória que consome o formato CSV.

Método C

Simplifica o design de relatório. Você pode reduzir o consumo de memória, simplificando o design de relatório das seguintes maneiras:
  • Inclua menos dados regiões ou controles no relatório.
  • Use um relatório de análise para exibir detalhes.
Além disso, se a finalidade do relatório é apenas a coleção de dados, você pode usar outros produtos Microsoft para obter melhor desempenho. Por exemplo, você pode usar o DTS (Data Transformation Services) ou Microsoft SQL Server 2005 Integration Services.

Exemplo

O exemplo a seguir demonstra como resolver esse problema. Considere o exemplo a seguir:
  • Um relatório que retorna 160 páginas no Report Manager não pode ser processado no formato PDF e no formato do Excel. O relatório extrema poderia exceder 250 páginas quando é usado um tamanho de página de 8,5 por 11 polegadas.
  • A fonte de dados para o relatório retorna 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 usada pelo dataset. Portanto, o SQL Server 2000 Reporting Services requer quase 1,5 GB de memória para processar o relatório.
Para resolver o problema neste exemplo, recrie o relatório para que o relatório mostra dados de resumo somente para um conjunto limitado de valores de filtro. Além disso, certifique-se a agregação ocorre na consulta de banco de dados que recebe os dados do relatório e a agregação não está no próprio relatório. Esses métodos ajudam a reduzir significativamente a quantidade de dados retornados para o servidor de relatório. Portanto, o relatório é processado mais rapidamente e com êxito.

Mais Informações

Quando você usar o SQL Server 2000 Reporting Services, você pode enfrentar um problema relacionado a memória é causado por uma das seguintes condições de erro:
  • Erro System.OutOfMemoryException é gerado.
  • Limites de memória são atingidos.
A principal diferença entre as condições de erro é o nível em que as condições de erro são detectadas e manipuladas.

Erro System.OutOfMemoryException é um erro gerado pelo SQL Server 2000 Reporting Services quando uma operação solicita mais memória do sistema e o sistema não pode fornecer a memória. Quando este erro ocorre, SQL Server 2000 Reporting Services desliga o processo de modo não seguro. O desligamento não é seguro porque o SQL Server 2000 Reporting Services compartilha recursos entre solicitações em execução. Portanto, SQL Server 2000 Reporting Services não pode garantir que dados são ainda seguros para todas as solicitações.

Os limites de memória são um conjunto de configurações para ajudar a proteger o sistema de desestabilizar potencialmente condições. Por exemplo, a memória limites ajudam a impedir que um servidor de relatório processo de usar muita memória. Os limites de memória são especificados através da configuração MemoryLimit e através da configuração MaximumMemoryLimit definido no arquivo RSReportServer.config. Quando os limites de memória são atingidos, erros são gerados pelo Microsoft .NET Framework antes de realmente executa o SQL Server 2000 Reporting Services de memória.

Você pode processar um relatório a partir de um site ou uma tarefa agendada. Portanto, as condições de erro podem ocorrer nos dois ambientes diferentes no SQL Server 2000 Reporting Services. Os ambientes são:
  • O Reporting Services Web service
  • Serviço Report Server Windows
Portanto, as combinações de ambientes e condições de erro a seguir existem.

O Reporting Services Web service e o erro System.OutOfMemoryException

Mensagens de exceção e mensagens de desligamento são semelhantes às seguintes mensagens são registradas no arquivo de log do SQL Server 2000 Reporting Services (ReportServerService_ <timestamp>.log):

W3wp! biblioteca! 1b3c! 11/07/2005-10:38:00:: e erro: exceção encontrada System.OutOfMemoryException: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: exceção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi lançada. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: exceção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi lançada. ---> System.OutOfMemoryException: exceção do tipo System.OutOfMemoryException foi lançada.

W3wp! biblioteca! 1b3c! 11/07/2005-10:38:00:: e erro: encerramento de processo do operador
Observação Por padrão, ReportServerService_ <timestamp> arquivo .log está no seguinte local:
\Microsoft SQL servidor\ <Instance of SQL Server> \Reporting Services\LogFiles
Além disso, os eventos que são semelhantes às seguintes eventos são registrados no log do aplicativo:


Tipo de evento: Aviso
Fonte do evento: W3SVC
Categoria do evento: nenhuma
IDENTIFICAÇÃO de evento: 1011
Data: Date
Tempo: Time
Usuário: N/d
Computador: ComputerName
Descrição:
Um processo que atende ao pool de aplicativos 'DefaultAppPool' sofreu um erro fatal de comunicação com o serviço de publicação na Internet. A identificação do processo era '9132'. O campo de dados contém o número do erro.

SQL Server 2000 Reporting Services não pode manipular esse erro normalmente. O serviço Reporting Services Web captura a exceção e desliga o processo. Você deve reenviar a solicitação.

Para resolver esse problema, você pode adicionar mais memória física ao sistema ou reduzir o consumo de memória de outros processos.

Idealmente, você pode ajustar a configuração de MemoryLimit ou a configuração de Pool de aplicativos do Microsoft Internet Information Services (IIS) 6.0 para que um erro é detectado antes situação de memória ocorre. Portanto, o processo é lidou com mais normalmente. Você deve experimentar as configurações e há nenhuma garantia você sempre chegar primeiro limites de memória.

O Reporting Services Web service e os limites de memória

Mensagens são registradas no log de eventos do Windows e no arquivo de log do SQL Server 2000 Reporting Services. O arquivo de log do serviço Web do Reporting Services indica que o processo está sendo desligado. No entanto, o SQL Server 2000 Reporting Services não controla o desligamento e não pode registrar as informações de erro sobre o desligamento.

Você pode perceber um dos seguintes eventos é registrado no log do aplicativo:

Evento 1


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

Evento 2


Um processo do operador com identificação de processo do pool de aplicativos '2420' servidora 'DefaultAppPool' solicitou uma reciclagem, porque atingiu o limite de memória virtual.

Quando os limites de memória são atingidos, o Microsoft ASP.NET ou IIS 6.0 trata esse erro e desliga o Reporting Services Web service. Os limites de memória todos são especificados pelo ASP.NET ou pelo IIS 6.0 e não são controlados pelo SQL Server 2000 Reporting Services.

Você pode alterar os limites de memória sob o <processmodel> seção no arquivo Machine.config.

Observação Se você estiver executando o IIS 6.0 no modo nativo, Machine.config arquivo não é usado. Os limites de memória são controlados por propriedades do pool de aplicativos no IIS 6.0.

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

Serviço Report Server Windows e o erro System.OutOfMemoryException

Relatórios não são entregues a um compartilhamento de arquivo ou entregues a destinatários inscritos. Ao processar o agendada processo reinicia automaticamente, o processo tenta executar a mesma inscrição novamente como parte do processo de recuperação. Mensagens de erro semelhantes às seguintes mensagens de erro são registradas no arquivo de log do SQL Server 2000 Reporting Services:

ReportingServicesService! biblioteca! 618! 7/9/2003-16: 06: 01:: status: erro: exceção do tipo System.OutOfMemoryException foi lançada.
ReportingServicesService! notificação! 618! 7/9/2003-16: 06: 01:: erro acionado pelo provedor de entrega: System.OutOfMemoryException: exceção do tipo System.OutOfMemoryException foi lançada.
ReportingServicesService! notificação! 618! 7/9/2003-16: 06: 01:: notificação 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6 concluída. Êxito: False, status: erro: exceção do tipo System.OutOfMemoryException foi lançada., DeliveryExtension: email do Report Server, Report: fatura, tentativa 0
ReportingServicesService! dbpolling! 618! 7/9/2003-16: 06: 01:: NotificationPolling terminado processamento item 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6
ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09: 30:: i INFO: memória restrição aplicativo domínio reciclagem solicitada
ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09: 30:: i INFO: Reciclando o serviço de domínio padrão
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09: 30:: EventPolling sondagem serviço interrompido
ReportingServicesService! dbpolling! 87 c! 7/9/2003-16: 09: 30:: EventPolling thread de pulsação saindo parada.
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09: 30:: NotificationPolling sondagem serviço interrompido
ReportingServicesService! dbpolling! 880! 7/9/2003-16: 09: 30:: thread de pulsação NotificationPolling saindo parada.
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09: 30:: SchedulePolling sondagem serviço interrompido
Serviço Report Server Windows captura a exceção e desliga o processo. Não é um processo de desligamento normal e outras solicitações que estão em processo são perdidas.

Não é possível configurar quaisquer configurações para evitar esse problema. Esse problema é afetado por quantidade de memória no computador e o consumo de memória de outros processos.

Para resolver esse problema, você pode adicionar mais memória física ao computador ou reduzir o consumo de memória de outros processos.

Serviço Report Server Windows e os limites de memória

Relatórios não são entregues a um compartilhamento de arquivo ou entregues a destinatários inscritos. A propriedade de status de uma inscrição tem o valor "Anulação de thread". Erro mensagens semelhantes às seguintes mensagens de erro são registradas no arquivo de log do SQL Server 2000 Reporting Services:

ReportingServicesService! reportrendering! 17a8! 09/28/2005-16: 10: 12:: e erro: inclusão Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: exceção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi lançada., INFO: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: exceção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi lançada. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: exceção do tipo Microsoft.ReportingServices.ReportRendering.ReportRenderingException foi lançada. ---> System.Threading.ThreadAbortException: thread estava sendo anulado.
ReportingServicesService! runningjobs! 17a8! 09/28/2005-16: 10: 12:: I INFO: CancelableJobExecution.Execute detectada outra exceção de anulação de thread
ReportingServicesService! biblioteca! 17a8! 09/28/2005-16: 10: 12:: i INFO: Inicializando EnableExecutionLogging para 'True' como especificado nas propriedades do sistema de Server.
ReportingServicesService! runningjobs! 1810! 09/28/2005-16: 10: 12:: i INFO: CancelableJobExecution.Execute detectada outra exceção de anulação de thread
ReportingServicesService! biblioteca! 1810! 09/28/2005-16: 10: 12:: i INFO: Inicializando EnableExecutionLogging para 'True' como especificado nas propriedades do sistema de Server.
ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10: 12:: NotificationPolling não mais processamento item 6e786bb5-3e4d 462a 92 fc-2942e6aec007, irá ser recolocado na fila
ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10: 12:: thread de trabalho da fila detectada exceção não tratada: System.Threading.ThreadAbortException: thread estava sendo anulado.
em Microsoft.ReportingServices.Library.NotificationQueueWorker.HandleNotification(QueueItem item)
em Microsoft.ReportingServices.Library.NotificationQueueWorker.QueueWorker(QueueItem item)
em Microsoft.ReportingServices.Library.QueuePollWorker.WorkItemStart (estado do objeto)
Observação Essas mensagens são seguidas de um abrupto final para o arquivo de log.

Serviço Report Server Windows tenta concluir solicitações existentes. Além disso, o serviço Report Server Windows monitora suas próprias configurações de configuração para certificar-se de uma operação solicitada não exceda os limites de memória. Se uma operação solicitada exceder os limites de memória, o serviço Report Server Windows pára o processo. O Report Server Windows serviço coloca automaticamente os trabalhos com falha em uma lista de tarefas de inicialização. Quando o serviço Report Server Windows for reiniciado, o serviço Report Server Windows tenta executar os trabalhos novamente.

Duas configurações no arquivo RSReportServer.config afetam a configuração de memória. As entradas específicas são configuração MaximumMemoryLimit e a configuração de MemoryLimit o <service> marca.

Esses valores representam um percentual de memória física. Se o consumo de memória de solicitações existentes atingir o percentual especificado pela configuração MemoryLimit, serviço Report Server Windows pára levando solicitações adicionais. No entanto, as solicitações que estão atualmente em andamento continuam. Novas solicitações são aceitas novamente após liberar memória é menor que o percentual especificado pela configuração MemoryLimit.

Se o consumo de memória de solicitações existentes atingir o percentual especificado pela configuração MaximumMemoryLimit, o domínio de aplicativo do servidor de relatório é encerrado.

Essas configurações imitam os limites de memória sob o <processmodel> seção no arquivo Machine.config e efetivamente funcionam da mesma maneira. Essas configurações emprestar consistência entre o Reporting Services Web service e do serviço Report Server Windows.

Referências

Para obter mais informações, consulte os tópicos a seguir no SQL Server Books Online:
  • Como adicionar um link de relatório de análise (Report Designer)
  • Exportando relatórios
  • Arquivo de configuração de RSReportServer
  • Reciclagem domínios de aplicativo de servidor de relatório

Propriedades

ID do artigo: 909678 - Última revisão: terça-feira, 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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