È possibile che venga visualizzato il messaggio di errore "System.OutOfMemoryException" quando si utilizza SQL Server Reporting Services

Traduzione articoli Traduzione articoli
Identificativo articolo: 909678 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando si utilizza Microsoft SQL Server 2000 Reporting Services o si utilizza Microsoft SQL Server 2005 Reporting Services, è possibile che venga visualizzato il seguente messaggio di errore:

Si è verificato un errore interno nel server di report.
Vedere il log degli errori per maggiori dettagli. (rsInternalError) Visualizzare la Guida in linea
È stata generata l'eccezione di tipo System.OutOfMemoryException.
Inoltre, si noterà che nel file di registro SQL Server Reporting Services viene registrato il seguente messaggio di errore o che il log termina improvvisamente:

System.OutOfMemoryException: Eccezione di tipo System.OutOfMemoryException generata.
È possibile notare che nel registro applicazioni di Microsoft Windows viene registrato uno dei seguenti eventi:

Evento 1


aspnet_wp.exe (PID: <PIDNumber>) è stato riciclato perché il consumo di memoria superava il <SizeLimit> MB (<Percentage> percentuale della RAM disponibile).

Evento 2


Un processo del pool di applicazioni 'DefaultAppPool' subìto un errore di comunicazione irreversibile con il servizio Pubblicazione sul Web. L'id di processo è '9132'. Il campo dati contiene il numero di errore.

Questo problema può verificarsi con uno o più dei seguenti sintomi:
  • Quando si tenta di visualizzare un report, il report non è finito.
  • Verrà visualizzato un report di rispondere.
  • Quando si tenta di visualizzare un report, viene visualizzata una schermata vuota.
  • Viene visualizzato il seguente messaggio di errore:

    Connessione sottostante chiusa
  • Le sottoscrizioni non vengono recapitate.

Cause

Questo problema si verifica perché il computer non è disponibile memoria sufficiente per completare l'operazione richiesta.

Una limitazione in SQL Server 2000 Reporting Services fa sì che alcune parti di elaborazione per la memoria associata sia di report. Ad esempio, l'elaborazione di risultati di query e il rendering del modello di oggetto sono memoria associata.

Il computer non dispone di memoria sufficiente per completare l'operazione richiesta quando uno o più delle seguenti condizioni:
  • Un report è troppo grande o troppo complessa.
  • L'overhead dei processi in esecuzione è molto elevato.
  • La memoria fisica del computer è troppo piccola.
Un report viene elaborato in due fasi. Le due fasi sono l'esecuzione e il rendering. Questo problema può verificarsi durante la fase di esecuzione o durante la fase di rendering.

Se questo problema si verifica durante la fase di esecuzione, questo problema si verifica molto probabilmente perché è utilizzata troppa memoria di dati che viene restituiti nei risultati della query. Inoltre, i seguenti fattori influiscono sul consumo di memoria durante la fase di esecuzione:
  • Raggruppamento
  • Applicazione di filtri
  • Aggregazione
  • L'ordinamento
  • Codice personalizzato
Se questo problema si verifica durante la fase di rendering, la causa è correlata a quali informazioni nel report vengono visualizzati e il modo in cui il report vengono visualizzate le informazioni. Ad esempio, i seguenti fattori influiscono sul consumo di memoria durante la fase di rendering:
  • Il numero e i tipi di controlli
  • La relazione tra i controlli
  • La formattazione
  • La quantità di dati viene visualizzati
Per ulteriori informazioni sul componente report processore, visitare il seguente sito Web MSDN (informazioni in lingua INGLESE):
http://msdn2.microsoft.com/en-us/library/aa179471(SQL.80).aspx

Risoluzione

Per risolvere il problema, utilizzare uno dei metodi descritti di seguito.

Metodo 1

Aggiungere memoria fisica sufficiente per il computer.

Nota Se si dispone di più di 2 gigabyte (GB) di memoria, è possibile attivare il / 3 GB opzione nel file Boot.ini per migliorare le prestazioni. Per ulteriori informazioni su come utilizzare l'opzione/3 GB in SQL Server, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
274750Come configurare SQL Server per l'utilizzo di più di 2 GB di memoria fisica

Metodo 2

Report di pianificazione per l'esecuzione a off-hours quando i vincoli di memoria sono inferiori.

Metodo 3

MemoryLimit di regolare l'impostazione di conseguenza.

Nota Quando si esegue il rendering un report tramite il Web di Reporting Services di servizio, servizio Web di Reporting Services Ottiene l'impostazione di MemoryLimit dal file Machine.config. Tuttavia, viene eseguito il rendering di un rapporto pianificato dal servizio Windows ReportServer. Il Windows ReportServer servizio ottiene l'impostazione di MemoryLimit dal file RSReportServer.config.

Per ulteriori informazioni sull'impostazione di MemoryLimit, vedere la sezione "Informazioni".

Metodo 4

Eseguire l'aggiornamento a una versione a 64 bit di Microsoft SQL Server 2005 Reporting Services.

Metodo 5

Riprogettare il report. Per effettuare questa operazione, utilizzare uno dei metodi descritti di seguito.

Metodo A

Riprogettare le query di report. Per ridurre il consumo di memoria, è possibile riprogettare le query di report nei modi seguenti:
  • Restituire un numero inferiore di dati nelle query di report.
  • Utilizzare una restrizione migliore nella clausola WHERE delle query di report.
  • Spostare le aggregazioni complesse per l'origine dati.

Metodo B

Esportare il report in un formato diverso. È possibile ridurre il consumo di memoria utilizzando un formato diverso per visualizzare il report. Nella tabella riportata di seguito sono elencati diversi formati di esportazione in ordine dalla maggior parte dei consumo di memoria al consumo di memoria minimi.
Riduci questa tabellaEspandi questa tabella
FormatoDescrizione
Microsoft ExcelEsegue il rendering di un report in Excel
Immagine (TIFF)Esegue il rendering di un report come un'immagine statica in un formato di pagina
PDFEsegue il rendering di un report in Portable Document Format (PDF)
HTMLEsegue il rendering di report in HTML per un browser
CSVEsegue il rendering di un report in formato delimitato da virgola; il report verrà aperto in uno strumento di visualizzazione è associato con formati di file CSV
XMLEsegue il rendering di un report in XML; il report verrà aperto in un browser
Nota Se non viene applicata una trasformazione XSLT, questo formato consumerà quantità di memoria inferiori a quelle che utilizza il formato CSV.

Metodo C

Consente di semplificare la struttura del report. È possibile ridurre il consumo di memoria semplificando la struttura del report nei modi seguenti:
  • Includere al massimo le aree dati o controlli nel report.
  • Utilizzare un report drill-through per visualizzare i dettagli.
Inoltre, se lo scopo del report è semplicemente la raccolta dei dati, è possibile utilizzare altri prodotti Microsoft per ottenere prestazioni migliori. Ad esempio, è possibile utilizzare Data Transformation Services (DTS) o Microsoft SQL Server 2005 Integration Services.

Esempio

Nell'esempio riportato di seguito viene illustrato come risolvere questo problema. Si consideri l'esempio riportato di seguito:
  • Non è possibile eseguire il rendering di un report che restituisce le 160 pagine in Gestione report in formato PDF e nel formato di Excel. Il report molto potrebbe superare i 250 pagine quando viene utilizzata una dimensione di pagina da 8,5 x 11 pollici.
  • L'origine dati per il report restituisce 500 megabyte (MB) di dati al server di report. In genere, SQL Server 2000 Reporting Services Richiede due o tre volte la quantità di memoria utilizzata dal dataset. Di conseguenza, SQL Server 2000 Reporting Services richiede quasi 1,5 GB di memoria eseguire il rendering del report.
Per risolvere il problema in questo esempio, riprogettare il report in modo che nel report vengono indicati i dati di riepilogo solo per un insieme limitato di valori di filtro. Assicurarsi inoltre che si verifica l'aggregazione della query di database che estrae i dati del report e che l'aggregazione non è il report stesso. Questi metodi consentono di ridurre significativamente la quantità di dati viene restituiti al server di report. Di conseguenza, il report viene eseguito il rendering più rapidamente e correttamente.

Informazioni

Quando si utilizza SQL Server 2000 Reporting Services, è possibile che si verifichi un problema relativo alla memoria che è causato da una delle seguenti condizioni di errore:
  • Viene generato l'errore System.OutOfMemoryException.
  • Vengono raggiunti i limiti di memoria.
La principale differenza tra le condizioni di errore è il livello delle condizioni di errore sono intercettate e gestite.

L'errore System.OutOfMemoryException è un errore generato da SQL Server 2000 Reporting Services quando un'operazione richiede più memoria al sistema e il sistema non è in grado di fornire la memoria. Quando si verifica questo errore, SQL Server 2000 Reporting Services arrestato il processo in modo non sicuro. L'arresto è unsafe perché SQL Server 2000 Reporting Services condivide le risorse tra l'esecuzione delle richieste. Pertanto, SQL Server 2000 Reporting Services non è in grado di garantire che i dati sono comunque sicuri per tutte le richieste.

I limiti di memoria sono un insieme di impostazioni che consentono di proteggere il sistema dai potenzialmente destabilizzare condizioni. Ad esempio la memoria dei limiti di impedire che un server di report elaborare dall'utilizzo di memoria eccessiva. I limiti di memoria vengono specificati tramite l'impostazione di MemoryLimit e tramite l'impostazione di MaximumMemoryLimit definito nel file RSReportServer.config. Quando vengono raggiunti i limiti di memoria, gli errori vengono generati da Microsoft .NET Framework prima di SQL Server 2000 Reporting Services effettivamente esaurisce la memoria.

È possibile eseguire il rendering di un report da un sito Web o da un'operazione pianificata. Di conseguenza, le condizioni di errore possono verificarsi in due diversi ambienti in SQL Server 2000 Reporting Services. Gli ambienti sono le seguenti operazioni:
  • Il servizio Web di Reporting Services
  • Il servizio Windows ReportServer
Di conseguenza, esistono le seguenti combinazioni di condizioni di errore e gli ambienti.

Il servizio Web di Reporting Services e l'errore System.OutOfMemoryException

I messaggi di eccezione e i messaggi di arresto del sistema sono simili ai seguenti vengono registrati nel file di registro SQL Server 2000 Reporting Services (ReportServerService_ <timestamp>.log):

w3wp! libreria! 1b3c! 11/07/2005-10:38:00:: e di errore: eccezione System.OutOfMemoryException trovato: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: eccezione di tipo è stata generata Microsoft.ReportingServices.ReportRendering.ReportRenderingException. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: eccezione di tipo è stata generata Microsoft.ReportingServices.ReportRendering.ReportRenderingException. ---> System.OutOfMemoryException: eccezione di tipo System.OutOfMemoryException è stata generata.

w3wp! libreria! 1b3c! 11/07/2005-10:38:00:: e di errore: terminazione del processo di lavoro
Nota Per impostazione predefinita, ReportServerService_ <timestamp> file con estensione log si trova nel percorso seguente:
\Microsoft SQL Server\ <Instance of SQL Server> \Reporting Services\LogFiles
Inoltre, nel registro applicazioni vengono registrati eventi analoghi ai seguenti eventi:


Tipo evento: Avviso
Origine evento: W3SVC
Categoria evento: nessuno
ID evento: 1011
Data: Date
Ora: Time
Utente: N/d
Computer: ComputerName
Descrizione:
Un processo del pool di applicazioni 'DefaultAppPool' subìto un errore di comunicazione irreversibile con il servizio Pubblicazione sul Web. L'id di processo è '9132'. Il campo dati contiene il numero di errore.

SQL Server 2000 Reporting Services non è in grado di gestire correttamente l'errore. Il servizio Web di Reporting Services intercetta l'eccezione e arresta il processo. È necessario inviare di nuovo la richiesta.

Per risolvere il problema, è possibile aggiungere una maggiore quantità di memoria fisica al sistema o di ridurre il consumo di memoria di altri processi.

In teoria, è possibile regolare l'impostazione di MemoryLimit o l'impostazione del Pool di applicazioni di Microsoft Internet Information Services (IIS) 6.0 in modo che è stato intercettato un errore prima che si verifichi la situazione di esaurimento della memoria. Di conseguenza, il processo viene discusso più normalmente. È necessario fare delle prove con le impostazioni e non vi è alcuna certezza che verrà sempre raggiungere i limiti di memoria prima.

Il servizio Web di Reporting Services e i limiti di memoria

I messaggi vengono registrati nel registro eventi di Windows e nel file di registro SQL Server 2000 Reporting Services. Il file di registro del servizio Web di Reporting Services indica che il processo è in corso l'arresto. Tuttavia, SQL Server 2000 Reporting Services non consente di controllare l'arresto del sistema ed è Impossibile accedere alle informazioni di errore per l'arresto del sistema.

È possibile notare che nel registro applicazioni viene registrato uno dei seguenti eventi:

Evento 1


aspnet_wp.exe (PID: <PIDNumber>) è stato riciclato perché il consumo di memoria superava il <SizeLimit> MB (<Percentage> percentuale della RAM disponibile).

Evento 2


Un processo di lavoro con id di processo del pool di applicazioni 'DefaultAppPool' '2420' serving ha richiesto un recycle perché ha raggiunto il limite di memoria virtuale.

Quando vengono raggiunti i limiti di memoria, Microsoft ASP.NET o IIS 6.0 gestisce questo errore e arresta il servizio Web di Reporting Services. I limiti di memoria vengono tutti specificati da ASP.NET o IIS 6.0 e non controllati da SQL Server 2000 Reporting Services.

È possibile modificare i limiti di memoria sotto il <processmodel> sezione nel file Machine.config.

Nota Se si esegue IIS 6.0 in modalità nativa, il file Machine.config non viene utilizzato il file. I limiti di memoria sono controllati dalle proprietà del pool di applicazioni in IIS 6.0.

Per ulteriori informazioni sulla configurazione della memoria in ASP.NET e in IIS 6.0, visitare i seguenti siti MSDN Web:

Il servizio Windows ReportServer e l'errore System.OutOfMemoryException

Report non vengono recapitati a una condivisione di file o recapitare a destinatari sottoscritti. Quando eseguire il rendering programmata processo verrà riavviato automaticamente, il processo tenta di eseguire nuovamente la stessa sottoscrizione come parte del processo di ripristino. Messaggi di errore analoghi ai seguenti messaggi di errore vengono registrati nel file di registro SQL Server 2000 Reporting Services:

ReportingServicesService! libreria! 618! 7/9/2003-16: 06: 01:: Status: errore: eccezione di tipo System.OutOfMemoryException è stata generata.
ReportingServicesService! notifica! 618! 7/9/2003-16: 06: 01:: errore generata dal provider di consegna: System.OutOfMemoryException: eccezione di tipo System.OutOfMemoryException è stata generata.
ReportingServicesService! notifica! 618! 7/9/2003-16: 06: 01:: Notification 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6 completata. Operazione riuscita: False, stato: errore: eccezione di tipo System.OutOfMemoryException è stata generata., DeliveryExtension: report Server Email, report: fattura, attempt 0
ReportingServicesService! dbpolling! 618! 7/9/2003-16: 06: 01:: NotificationPolling completato l'elaborazione elemento 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6
ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09: 30:: i INFO: memoria vincolo app dominio recycle richiesto
ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09: 30:: i INFO: riciclo del servizio da dominio predefinito
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09: 30:: EventPolling polling servizio arrestato
ReportingServicesService! dbpolling! 87 c! 7/9/2003-16: 09: 30:: EventPolling thread heartbeat uscita di interruzione.
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09: 30:: servizio NotificationPolling polling interrotto
ReportingServicesService! dbpolling! 880 da! 7/9/2003-16: 09: 30:: NotificationPolling heartbeat thread uscita di interruzione.
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09: 30:: SchedulePolling polling servizio arrestato
Il servizio Windows ReportServer intercetta l'eccezione e arresta il processo. Non è un processo di tipo graceful e altre richieste sono nel processo verranno perse.

Non è possibile configurare le impostazioni per evitare questo problema. Questo problema è interessato mediante la quantità di memoria del computer e del consumo di memoria di altri processi.

Per risolvere il problema, è possibile aggiungere una maggiore quantità di memoria fisica al computer o di ridurre il consumo di memoria di altri processi.

Il servizio Windows ReportServer e i limiti di memoria

Report non vengono recapitati a una condivisione di file o recapitare a destinatari sottoscritti. La proprietà Status di una sottoscrizione ha il valore "Abort Thread". Errore nel file di registro SQL Server 2000 Reporting Services vengono registrati messaggi analoghi ai seguenti messaggi di errore:

ReportingServicesService! reportrendering! 17a8! 09/28/2005-16: 10: 12:: e errore: generazione Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: eccezione di tipo è stata generata Microsoft.ReportingServices.ReportRendering.ReportRenderingException., Info: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: eccezione di tipo è stata generata Microsoft.ReportingServices.ReportRendering.ReportRenderingException. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: eccezione di tipo è stata generata Microsoft.ReportingServices.ReportRendering.ReportRenderingException. ---> System.Threading.ThreadAbortException: thread annullato.
ReportingServicesService! runningjobs! 17a8! 09/28/2005-16: 10: 12:: ho INFO: CancelableJobExecution.Execute ha rilevato alcuni altri eccezione di interruzione del thread
ReportingServicesService! libreria! 17a8! 09/28/2005-16: 10: 12:: i INFO: inizializzazione EnableExecutionLogging su 'True' come specificato nelle proprietà di sistema del server.
ReportingServicesService! runningjobs! 1810! 09/28/2005-16: 10: 12:: i INFO: CancelableJobExecution.Execute ha rilevato alcuni altri eccezione di interruzione del thread
ReportingServicesService! libreria! 1810! 09/28/2005-16: 10: 12:: i INFO: inizializzazione EnableExecutionLogging su 'True' come specificato nelle proprietà di sistema del server.
ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10: 12:: NotificationPolling non è più l'elaborazione elemento 92 462a di 3e4d 6e786bb5 fc-2942e6aec007, verrà essere ricevuti
ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10: 12:: coda thread di lavoro rilevata eccezione non gestita: System.Threading.ThreadAbortException: thread annullato.
in Microsoft.ReportingServices.Library.NotificationQueueWorker.HandleNotification(QueueItem item)
in Microsoft.ReportingServices.Library.NotificationQueueWorker.QueueWorker(QueueItem item)
in Microsoft.ReportingServices.Library.QueuePollWorker.WorkItemStart (stato oggetto)
Nota Questi messaggi sono seguiti da un improvviso di fine per il file di registro.

Il servizio Windows ReportServer tenta di completare le richieste esistenti. Inoltre, il servizio Windows ReportServer monitora le proprie impostazioni di configurazione per assicurarsi che l'operazione richiesta non superi i limiti di memoria. Se un'operazione richiesta è superiore i limiti di memoria, il servizio Windows ReportServer interrompe il processo. Il Windows ReportServer servizio inserisce automaticamente processi non riusciti in un elenco di attività di avvio. Quando viene riavviato il servizio Windows ReportServer, il servizio Windows ReportServer tenta di eseguire di nuovo i processi.

Due impostazioni nel file RSReportServer.config influiscono sulla configurazione di memoria. Le voci specifiche sono l'impostazione di MaximumMemoryLimit e l'impostazione di MemoryLimit di <service> tag.

Questi valori rappresentano una percentuale di memoria fisica. Se il consumo di memoria delle richieste esistenti raggiunge la percentuale specificata dall'impostazione della MemoryLimit, si interrompe il servizio Windows ReportServer accettando le richieste aggiuntive. Tuttavia, continuano le richieste in corso. Le nuove richieste vengono accettate nuovamente dopo la memoria disponibile è inferiore rispetto alla percentuale specificata dall'impostazione della MemoryLimit.

Se il consumo di memoria delle richieste esistenti raggiunge la percentuale specificata dall'impostazione della MaximumMemoryLimit, viene terminato il dominio di applicazione del server di report.

Queste impostazioni simulano i limiti di memoria sotto il <processmodel> della sezione nel file Machine.config e funzionano in modo efficace allo stesso modo. Queste impostazioni che rappresentano efficacemente la coerenza tra il servizio Web di Reporting Services e il servizio Windows ReportServer.

Riferimenti

Per ulteriori informazioni, vedere gli argomenti seguenti in SQL Server documentazione in linea:
  • Come aggiungere un collegamento report drill-through (Report Designer)
  • Esportazione dei report
  • File di configurazione RSReportServer
  • Il riciclo dei domini applicazione server di report

Proprietà

Identificativo articolo: 909678 - Ultima modifica: martedì 24 novembre 2009 - Revisione: 3.0
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Reporting Services
  • Microsoft SQL Server 2005 Reporting Services
Chiavi: 
kbmt kbexpertiseadvanced kbprb KB909678 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 909678
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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