Při použití služby SQL Server Reporting Services, může se zobrazit chybová zpráva "System.OutOfMemoryException"

Příznaky

Při použití služby Microsoft SQL Server 2000 Reporting Services nebo pomocí služby Microsoft SQL Server 2005 Reporting Services, můžete obdržet následující chybovou zprávu:

Došlo k vnitřní chybě na serveru sestav.
Naleznete v protokolu chyb další podrobnosti. (rsInternalError) Získání Online nápovědy
Byla vyvolána výjimka typu System.OutOfMemoryException.
Navíc můžete si všimnout, že je zaznamenána následující chybová zpráva v souboru protokolu SQL Server Reporting Services nebo náhlé ukončení protokolu:

System.OutOfMemoryException: Typu System.OutOfMemoryException byla vyvolána výjimka.
Můžete si všimnout, že jeden z následujících událostí je zaznamenána v protokolu aplikace Microsoft Windows:

Událost 1 Události 2 Tento problém může nastat jedním nebo více z následujících příznaků:
  • Při pokusu o zobrazení sestavy, je sestava nikdy dokončena.
  • Zobrazí se zpráva přestane reagovat.
  • Při pokusu o zobrazení sestavy se zobrazí prázdná obrazovka.
  • Zobrazí se následující chybová zpráva:

    Základní připojení ukončeno
  • Odběry nebudou doručeny.

Příčina

K tomuto problému dochází, protože počítač nemá dostatek paměti k dokončení požadované operace.

Omezení v SQL Server 2000 Reporting Services způsobí, že některé části sestavy zpracování paměti vázán. Například dotaz výsledek zpracování a vykreslení modelu objektu jsou vázány paměti.

Počítač nemá dostatek paměti k dokončení požadované operace, pokud jeden nebo více následujících podmínek jsou pravdivé:
  • Sestava je příliš dlouhý nebo příliš složitý.
  • Je velmi vysoké zatížení spuštěné procesy.
  • Fyzická paměť počítače je příliš malá.
Zpráva je zpracována ve dvou etapách. Dvou etapách jsou spuštění a vykreslování. Tomuto problému může dojít během fáze spuštění nebo během fáze vykreslování.

Pokud k tomuto problému dochází během fáze provádění, příčinou tohoto problému pravděpodobně příliš mnoho paměti je využívána data, která je vrácena v sadě výsledků dotazu. Navíc následující faktory ovlivňují spotřebu paměti během provádění stavby:
  • Seskupení
  • Filtrování
  • Agregace
  • Řazení
  • Vlastní kód
Pokud k tomuto problému dochází během fáze vykreslování, příčiny souvisí, na jaké informace v sestavě a jak se sestava zobrazí informace. Například následující faktory ovlivňují spotřebu paměti během fáze vykreslování:
  • Počet a typy ovládacích prvků
  • Vztah mezi ovládacími prvky
  • Formátování
  • Množství dat, která je zobrazena
Další informace o součásti sestavy procesoru naleznete následujícím webu Microsoft Developer Network (MSDN):

Řešení

Chcete-li tento problém vyřešit, použijte jednu z následujících metod.

Metoda 1

Přidáte dostatek fyzické paměti v počítači.

Poznámka: Pokud máte více než 2 gigabajty (GB) paměti, můžete povolit přepínač/3 GB v souboru Boot.ini pro lepší výkon.
Další informace o použití přepínače/3 GB na serveru SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
274750 jak nakonfigurovat SQL Server k použití více než 2 GB fyzické paměti

Metoda 2

Naplánovat sestavy na která, pokud jsou nižší omezení paměti.

Metoda 3

Upravit MemoryLimit nastavení odpovídajícím způsobem.

Poznámka: Při můžete vykreslit sestavy prostřednictvím služby Reporting Services Web, webovou službou Reporting Services získá MemoryLimit nastavení ze souboru Machine.config. Plánované sestavy je však vykreslen pomocí služby Windows Server zprávu. Sestavy serveru Windows service získá MemoryLimit nastavení ze souboru RSReportServer.config.

Další informace o nastavení limitu naleznete v části "Další informace".

Metoda 4

Upgrade na 64bitovou verzi systému Microsoft SQL Server 2005 Reporting Services.

Metoda 5

Změnit návrh sestavy. Chcete-li to provést, použijte jednu z následujících metod.

Metoda A

Změnit návrh sestavy dotazy. Můžete snížit spotřebu paměti podle návrhu dotazech sestavy následujícími způsoby:
  • Vrátí méně dat v dotazech sestavy.
  • Pomocí lepší omezení v klauzuli WHERE dotazu sestavy.
  • Zdroj dat přesuňte komplexní agregace.

Metoda B

Exportujte sestavy do jiného formátu. Pomocí jiného formátu pro zobrazení sestavy můžete snížit spotřebu paměti. Následující tabulka uvádí několik formáty exportu v pořadí od většiny spotřeba paměti nejmenší spotřebu paměti.
FormátPopis
Aplikace Microsoft ExcelVykreslí sestavy v aplikaci Excel
Obrázek ve formátu TIFF)Vykreslí sestavy jako statický obrázek ve formátu orientované stránce
PDFVykreslí sestavu ve formátu PDF (Portable Document)
VE FORMÁTU HTMLVykreslí sestavu ve formátu HTML do prohlížeče
CSVVykreslí sestavu ve formátu s hodnotami oddělenými čárkou. Sestava se otevře v zobrazení nástroj, který je přidružen k souboru formátu CSV
XMLVykreslí sestavu ve formátu XML; Sestava se otevře v prohlížeči
Poznámka: Pokud není použita transformace XSLT, tento formát spotřebuje méně paměti než využívá formátu CSV.

Metoda C

Zjednodušení návrhu sestavy. Spotřeba paměti může snížit zjednodušením návrh sestavy následujícími způsoby:
  • Do sestavy můžete zahrnete menší počet oblastí dat nebo ovládací prvky.
  • Sestava podrobností sestavy slouží k zobrazení podrobností.
Navíc pokud účel sestavy pouze pro sběr dat, můžete použít další produkty společnosti Microsoft pro lepší výkon. Můžete například použít Data Transformation Services (DTS) nebo Microsoft SQL Server 2005 Integration Services.

Příklad

Následující příklad ukazuje, jak tento problém vyřešit. Zvažte následující příklad:
  • Ve formátu PDF a ve formátu aplikace Excel nelze vykreslit sestavu, která vrátí 160 stránek ve správci sestav. Sestava může daleko přesáhnout 250 stran při použití je velikost stránky 8,5 podle 11 palců.
  • Zdroj dat pro sestavu vrátí 500 megabajtů (MB) dat na serveru sestav. SQL Server 2000 Reporting Services vyžaduje obvykle dvakrát až třikrát množství paměti, který používá objekt dataset. Proto SQL Server 2000 Reporting Services vyžadováno téměř 1,5 GB paměti k vykreslení sestavy.
Chcete-li vyřešit problém v tomto příkladu, změnit návrh sestavy tak, aby se v sestavě se zobrazí souhrnná data pouze pro omezenou sadu hodnot filtru. Dále zkontrolujte, že v databázový dotaz, který získává data sestavy dojde k seskupení a agregace není v samotné sestavě. Tyto metody pomáhají významně snížit množství dat, který je vrácen na server sestav. Proto sestavy je vykreslen úspěšně a rychleji.

Další informace

Při použití SQL Server 2000 Reporting Services, můžete zaznamenat problém související s paměti, která je způsobena některou z následujících chybových stavů:
  • Je vyvolána chyba System.OutOfMemoryException .
  • Je dosaženo limitu paměti.
Hlavní rozdíl mezi chybových stavů je úroveň jakou chybové stavy odchycena a zpracována.

System.OutOfMemoryException chyba je chyba, která je vyvolána pomocí SQL Server 2000 Reporting Services, pokud operace vyžaduje více paměti ze systému a systém nemůže poskytnout paměť. Pokud k této chybě dojde, SQL Server 2000 Reporting Services vypne proces nebezpečným způsobem. Vypnutí počítače nebezpečné, protože SQL Server 2000 Reporting Services sdílí zdroje mezi požadavky na systém. Proto SQL Server 2000 Reporting Services nemůže zaručit, že data jsou stále bezpečný pro všechny požadavky.

Limity paměti jsou sady nastavení chránit systém před potenciálně destabilizing podmínek. Například omezení zabránit serveru sestav paměti zpracovat pomocí příliš mnoho paměti. Limity paměti jsou určeny prostřednictvím nastavení limitu a MaximumMemoryLimit nastavení, které jsou definovány v souboru RSReportServer.config. Po dosažení limitu paměti chyby jsou vyvolány rozhraním Microsoft rozhraní.NET Framework před spuštěním SQL Server 2000 Reporting Services skutečně nedostatek paměti.

Můžete vykreslit sestavy z webu nebo z naplánované úlohy. Chybové stavy, proto může dojít ve dvou různých prostředích v SQL Server 2000 Reporting Services. V prostředí jsou následující:
  • Webovou službou Reporting Services
  • Sestavy serveru Windows service
Proto existují následující kombinace chybové podmínky a prostředí.

Webovou službou Reporting Services a System.OutOfMemoryException chybu

V souboru protokolu SQL Server 2000 Reporting Services (ReportServerService_ log< razítka >) jsou zaznamenány zprávy výjimek a vypnutí zprávy podobné následujícím zprávám:

W3wp! knihovny! 1b3c! 07/11/2005-10: 38:00:: e Chyba: nalezeno System.OutOfMemoryException výjimka: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: typ Microsoft.ReportingServices.ReportRendering.ReportRenderingException byla vyvolána výjimka. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: typ Microsoft.ReportingServices.ReportRendering.ReportRenderingException byla vyvolána výjimka. ---> System.OutOfMemoryException: typu System.OutOfMemoryException byla vyvolána výjimka.


W3wp! knihovny! 1b3c! 07/11/2005-10: 38:00:: e Chyba: ukončení pracovního procesu
Poznámka: Standardně je ReportServerService_< razítka >.log souboru v následujícím umístění:
\Microsoft SQL Server\ \Reporting Services\LogFiles< Instance serveru SQL Server >
Navíc jsou zaznamenány události podobné následující události v aplikaci protokolu: SQL Server 2000 Reporting Services nelze řádně zpracovat tuto chybu. Webovou službou Reporting Services zachytí výjimku a vypnutí procesu. Musí znovu odeslat žádost.

Chcete-li tento problém vyřešit, můžete přidat více fyzické paměti v systému nebo snížit spotřebu paměti jinými procesy.

V ideálním případě můžete upravit nastavení limitu nebo Fond aplikací nastavení z Internetová informační služba (IIS) 6.0 tak, aby chyba uvízl dříve, než dojde k situaci z důvodu nedostatku paměti. Proto proces je řešeno více řádně. Musíte experimentovat s nastavením a není zaručeno, že budete vždy dosáhne limitu paměti nejprve.

Webovou službou Reporting Services a limity paměti

Zprávy jsou zaznamenány v protokolu událostí systému Windows a v souboru protokolu SQL Server 2000 Reporting Services. Soubor protokolu služby Reporting Services Web označuje ukončování procesu. Však SQL Server 2000 Reporting Services neurčuje vypnutí počítače a nelze protokolovat informace o chybě o vypnutí počítače.

Můžete si všimnout, že jeden z následujících událostí je zaznamenána v protokolu aplikace:

Událost 1 Události 2 Po dosažení limitu paměti Microsoft ASP.NET nebo IIS 6.0 zpracovává tuto chybu a vypne webovou službou Reporting Services. Limity paměti jsou všechny zadané pomocí technologie ASP.NET nebo IIS 6.0 a nejsou řízeny pomocí SQL Server 2000 Reporting Services.

Můžete měnit limity paměti v části < processModel > v souboru Machine.config.

Poznámka: Pokud používáte službu IIS 6.0 v nativním režimu, není použit soubor Machine.config. Limity paměti jsou řízeny vlastnostmi fondu aplikací ve službě IIS 6.0.

Další informace o konfiguraci paměti v technologii ASP.NET a služby IIS 6.0 naleznete na následujících webech MSDN:

Službu Windows Server zprávu a System.OutOfMemoryException chybu

Zprávy nejsou doručovány do sdílené nebo dodány upsaný příjemci. Při plánovaném vykreslení automaticky restartuje proces, proces se pokusí znovu spustit stejné předplatné jako součást procesu obnovení. V souboru protokolu SQL Server 2000 Reporting Services zaznamenány chybové zprávy podobné následující chybové zprávy:

ReportingServicesService! knihovny! 618! 7/9/2003-16: 06:01:: Stav: Chyba: výjimka typu System.OutOfMemoryException byla vyvolána.

ReportingServicesService! upozornění! 618! 7/9/2003-16: 06:01:: chyba vyvolána zprostředkovatelem dodání: System.OutOfMemoryException: typu System.OutOfMemoryException byla vyvolána výjimka.

ReportingServicesService! upozornění! 618! 7/9/2003-16: 06:01:: 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6 oznámení dokončení. Úspěch: False, stav: Chyba: výjimka typu System.OutOfMemoryException byla vyvolána., DeliveryExtension: E-mail Server sestavy, sestava: faktura, pokus o 0

ReportingServicesService! dbpolling! 618! 7/9/2003-16: 06:01:: NotificationPolling dokončení zpracování položky 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6

ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09:30:: i INFO: paměti omezení aplikace domény Koš požadované

ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09:30:: i INFO: recyklace služby od výchozí domény

ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09:30:: EventPolling dotazování service byla zastavena

ReportingServicesService! dbpolling! 87c! 7/9/2003-16: 09:30:: EventPolling prezenční signál podproces ukončení pro zastavení.

ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09:30:: NotificationPolling dotazování service byla zastavena

ReportingServicesService! dbpolling! 880! 7/9/2003-16: 09:30:: NotificationPolling prezenční signál podproces ukončení pro zastavení.

ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09:30:: SchedulePolling dotazování service byla zastavena
Windows Server sestavy Služba zachytí výjimku a vypnutí procesu. To není bezproblémové proces a jiné požadavky, které jsou v procesu budou ztraceny.

Nelze konfigurovat žádné nastavení, aby se zabránilo tomuto problému. Tento problém má vliv velikost paměti v počítači a spotřeba paměti dalších procesů.

Chcete-li tento problém vyřešit, můžete přidat více fyzické paměti počítače nebo snížit spotřebu paměti jinými procesy.

Službu Windows Server zprávu a limity paměti

Zprávy nejsou doručovány do sdílené nebo dodány upsaný příjemci. Vlastnost Status předplatného má hodnotu "Přerušení podprocesu". V souboru protokolu SQL Server 2000 Reporting Services zaznamenány chybové zprávy podobné následující chybové zprávy:

ReportingServicesService! reportrendering! 17a8! 09/28/2005-16: 10:12:: e Chyba: vyvolání Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: typ Microsoft.ReportingServices.ReportRendering.ReportRenderingException byla vyvolána výjimka., Info: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: typ Microsoft.ReportingServices.ReportRendering.ReportRenderingException byla vyvolána výjimka. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: typ Microsoft.ReportingServices.ReportRendering.ReportRenderingException byla vyvolána výjimka. ---> System.Threading.ThreadAbortException: Proběhlo přerušení podprocesu.
ReportingServicesService! runningjobs! 17a8! 09/28/2005-16: 10:12:: i INFO: jiná vlákna přerušení výjimka zachycena CancelableJobExecution.Execute

ReportingServicesService! knihovny! 17a8! 09/28/2005-16: 10:12:: i INFO: Inicializace EnableExecutionLogging na hodnotu "True" jako zadaný v dialogovém okně Vlastnosti systému serveru.

ReportingServicesService! runningjobs! 1810! 09/28/2005-16: 10:12:: i INFO: jiná vlákna přerušení výjimka zachycena CancelableJobExecution.Execute

ReportingServicesService! knihovny! 1810! 09/28/2005-16: 10:12:: i INFO: Inicializace EnableExecutionLogging na hodnotu "True" jako zadaný v dialogovém okně Vlastnosti systému serveru.
ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10:12:: NotificationPolling již zpracování zboží 6e786bb5-3e4d-462a-92 fc-2942e6aec007, bude zařazena.

ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10:12:: fronty podproces ulovených neošetřená výjimka: System.Threading.ThreadAbortException: Proběhlo přerušení podprocesu.
v Microsoft.ReportingServices.Library.NotificationQueueWorker.HandleNotification (položka položku fronty)
v Microsoft.ReportingServices.Library.NotificationQueueWorker.QueueWorker (položka položku fronty)
v Microsoft.ReportingServices.Library.QueuePollWorker.WorkItemStart (stav objektu)
Poznámka: Tyto zprávy následuje náhlý konec souboru protokolu.

Sestavy serveru Windows service se pokusí dokončit existujících požadavků. Kromě toho sestavy serveru Windows service sleduje vlastní nastavení konfigurace a ujistěte se, že požadovaná operace nepřekročí limity paměti. Pokud požadovaná operace překročí limity paměti, Windows Server sestavy služba zastaví proces. Sestavy serveru Windows service automaticky vloží do seznamu úkolů při spuštění neúspěšné úlohy. Po restartování služby Report Server Windows sestavy serveru Windows service se pokusí znovu spustit úlohy.

Dvě nastavení v souboru RSReportServer.config vliv konfigurace paměti. Konkrétní položky jsou MaximumMemoryLimit nastavení a nastavení limitu ve značce < Service > .

Tyto hodnoty představují procento fyzické paměti. Pokud spotřeba paměti existujících požadavků dosáhne procento, které je určeno MemoryLimit nastavení, sestavy serveru Windows service přestane převzetí další požadavky. Však stále požadavků, které právě probíhají. Nové žádosti budou přijaty znovu po volné paměti je menší než procento, který je určen MemoryLimit nastavení.

Pokud spotřeba paměti existujících požadavků dosáhne procento, které je určeno MaximumMemoryLimit nastavení, sestavy serveru aplikační domény je ukončeno.

Tato nastavení napodobovat limity paměti v části < processModel > v souboru Machine.config a efektivně pracovat stejným způsobem. Tato nastavení půjčit soulad mezi webovou službou Reporting Services a sestavy serveru Windows service.

Odkazy

Další informace naleznete v následujících tématech v SQL Server Books Online:
  • Jak přidat odkaz sestava podrobností sestavy (Návrhář sestav)
  • Export sestav
  • Konfigurační soubor RSReportServer
  • Recyklaci domény aplikace serveru sestav
Vlastnosti

ID článku: 909678 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor