Die Microsoft Reporting Services haben sich in den letzten Jahren enorm weiterentwickelt. Mit jeder neuen Version wurden sie mächtiger, hübscher, einfacher zu bedienen und meistens auch schneller. Dass das mit der Geschwindigkeit aber auch mal nach hinten los gehen kann, mussten wir kürzlich in einem Projekt feststellen, bei dem das Upgrade von Reporting Services 2008 auf 2008 R2 zu deutlich langsameren Berichten führte.

Symptom

Ein Bericht, der unter 2008 von der Performance her ok war, bringt unter 2008 R2 den Rechner, auf dem er betrachtet wird, zum Erliegen. Erst dreht sich wie gewohnt das nette „Bitte Warten“-Rädchen. Ungefähr nach der Zeit, nach der der Bericht unter 2008 dann angezeigt wurde, bleibt das Rad jedoch stehen, die CPU geht auf 100% und der Internet Explorer zeigt in etwa dieses Bild:

Internet Explorer ohne Rückmeldung

Abbildung 1: Internet Explorer ohne Rückmeldung

In diesem Zustand bleibt das Fenster dann je nach Größe des Berichtes einige Zeit stehen (in unserem Fall auch gerne mal über 10s).

Ursache

Grund dafür ist ein neues, bzw. neuerdings unterstütztes, Feature der HTML-Rendering Engine der SSRS: das „filling“.

Auf den ersten Blick sehen die Berichte in beiden Versionen gleich aus, bei genauer Betrachtung entdeckt man dann aber doch einen kleinen Unterschied.

Bericht in SSRS 2008

Abbildung 2: Bericht in SSRS 2008

Bericht in SSRS 2008 R2

Abbildung 3: Bericht in SSRS 2008 R2

In SSRS 2008 R2 funktioniert also die automatische Größenanpassung von Charts, die in einer Tabelle angezeigt werden. Abgesehen davon, dass das nicht ganz den Grundlagen des Corporate Information Designs entsprechen dürfte, dauert genau diese dynamische Größenanpassung bei großen Berichten mit vielen Grafiken ewig.

Lösung

In dem Augenblick, wo eine Grafik nicht direkt in die Tabellenzelle gezeichnet wird, sondern auf ein Rechteck, dass in der Zelle ist, wird die Grafik pixelgenau gezeichnet und verändert nicht mehr dynamisch ihre Größe.

Das Ergebnis sieht dann wieder so aus wie früher und auch die Zeit bis der Bericht angezeigt wird ist wieder vergleichbar.