2017-03-14 6 views
0

Ich habe einen Bericht von einem Entwickler geerbt, in dem er 5 Berichte zu einem SSRS-Bericht zusammenfasste. Es sieht so aus, als ob er jeden Tablix aus den Originalberichten kopiert und eingefügt hat. Dies geschah, damit der Benutzer beim Exportieren nach Excel jeden Bericht auf einer separaten Registerkarte anzeigen kann. Ich habe noch nie zuvor einen multiplen SSRS-Bericht erstellt, also analysiere ich gerade, wie das Ganze funktioniert. Ein großes Problem, das ich finde, ist, dass es extrem langsam läuft, etwa 10 Minuten, scheinbar weil es alle 5 Abfragen ausführen muss. Jede gespeicherte Prozedur wird separat als Datensatz aufgelistet. Kennt jemand einen besseren Weg, um mehrere SSRS-Berichte auf einer Seite zu erstellen, oder zumindest, wie man dieses Ding schneller macht?Das Hinzufügen mehrerer SSRS-Berichte zu einem Bericht ist sehr langsam.

Antwort

0

Der erste Schritt zur Verbesserung der Leistung eines SSRS-Berichts besteht darin, den Engpass zu ermitteln. Führen Sie eine Abfrage für die Ansicht ExecutionLog4 in der ReportServer-Datenbank aus. Für jede kürzlich durchgeführte Ausführung eines Berichts enthält die Ansicht einen Datensatz, der 3 kritische Felder enthält: TimeDataRetrieval, TimeProcessing und TimeRendering.

TimeDataRetrieval gibt an, wie lange (in Millisekunden) die Ausführung aller Abfragen und die Rückgabe der Datensätze dauert. Wenn diese Zahl hoch ist, müssen Sie Ihre Abfragen optimieren oder einige davon eliminieren, um die Leistung zu verbessern. Sie können eine Profiler-Ablaufverfolgung ausführen, um festzustellen, welche der Prozeduren langsam ausgeführt wird.

Beachten Sie auch, dass Unterberichte ihre Datensatzabfragen jedes Mal auslösen, wenn sie im Bericht gerendert werden. So wird selbst ein geringfügiger Performance-Schluckauf in einem Unterbericht-Dataset durch die Anzahl der Ausführungen vergrößert.

TimeProcessing gibt an, wie viel Zeit der Berichtsserver für die Bearbeitung der abgerufenen Daten benötigt. Wenn diese Zahl hoch ist, sollten Sie in Betracht ziehen, Aggregationsberechnungen auszuführen, die häufig innerhalb eines Berichts ausgeführt werden, um auf der SQL-Seite ausgeführt zu werden.

TimeRendering gibt an, wie lange der Server benötigt, um den Bericht tatsächlich zu rendern. Wenn diese Zahl hoch ist, sollten Sie Ausdrücke vermeiden oder vereinfachen, die für visuelle Eigenschaften verwendet werden, die immer wieder vorkommen. Dieses Szenario ist meiner Erfahrung nach weniger verbreitet als die anderen beiden.

Darüber hinaus sind hier einige Tipps, die ich habe, dass Hilfe nahm, um Leistungsprobleme zu vermeiden:

-Vermeiden mit Zeilen Sichtbarkeit Ausdrücke, wenn Sie eine große Anzahl von Zeilen erwarten zurückgegeben werden. - Das Ausblenden eines Objekts verhindert nicht die Ausführung des Datasets. Wenn Ihre Datasets eine ähnliche Struktur aufweisen, sollten Sie sie kombinieren und mithilfe von Objektfiltern einschränken, was in verschiedenen Abschnitten angezeigt wird. Oder verwenden Sie eine IF-Anweisung in Ihrer gespeicherten Prozedur, wenn Sie nur eine von mehreren Möglichkeiten anzeigen möchten, abhängig von Daten oder Parametern. - Versuchen Sie, die Anzahl der Spaltengruppierungen in einem großen Tablix zu begrenzen. Für jede Gruppierung in einem Tablix multiplizieren Sie die Anzahl der Datenzeilen, die an Pivot zurückgegeben werden können, in diese Gruppierungen.

Weitere Informationen über SSRS Leistung bei https://technet.microsoft.com/en-us/library/bb522806(v=sql.105).aspx finden Dies wurde für 2008R2 geschrieben, scheint aber meist für 2012 als auch.

Geben Sie alles eine Chance, dann posten Sie hier mit einer spezifischeren Frage zurück, wenn Sie stecken bleiben.

+0

Leider habe ich bei der Arbeit eingeschränkte Berechtigungen und kann nichts gegen ExecutionLog4 ausführen. Mein erster Schritt ist, jede dieser Abfragen neu zu schreiben und zu sehen, ob das hilft. – jackstraw22

+0

Das ist eine Schande. Ich schüttle immer den Kopf, wenn Organisationen jemanden damit beauftragen, etwas zu verbessern und ihm die geeigneten Werkzeuge dafür zu entziehen ... –