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
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.
- 1. TabControl Hinzufügen ist sehr langsam
- 2. Leaflet: Hinzufügen von Layer-Gruppe zu Karte ist sehr langsam
- 3. django ist sehr langsam
- 4. change.delegate ist sehr langsam
- 5. Website ist sehr langsam
- 6. UIWebView ist sehr langsam
- 7. UIImage setImage ist sehr, sehr langsam
- 8. Wordpress Webseite ist sehr langsam zu laden
- 9. RenderTexture zu Texture2D ist sehr langsam
- 10. Kolben Anwendung ist sehr langsam
- 11. Coredata ist sehr langsam; swift
- 12. RichTextBox Formatierung ist sehr langsam
- 13. Google Maps ist sehr langsam
- 14. `Friday` Paket ist sehr langsam
- 15. Android Bildergalerie ist sehr langsam
- 16. AAD GraphClient API Mitgliedschaft sehr langsam hinzufügen
- 17. Android TextureView.getBitmap() ist sehr langsam
- 18. Elasticsearch Indizierung ist sehr langsam
- 19. SSRS - Hinzufügen mehrerer Tabellen in einem Bericht mit verschiedenen Parametern
- 20. SharePoint 2010 mehrere Bericht-Viewer-Webparts - sehr langsam
- 21. GSON Serialisierung sehr sehr langsam
- 22. SQLite Sehr langsam ExecuteNonQuery
- 23. JQuery addClass wp_nav_menu ist sehr langsam
- 24. SQLite - Select Ausdruck ist sehr langsam
- 25. Erstanruf auf ServiceFabric-Proxy ist sehr langsam
- 26. Ist das Hinzufügen mehrerer Elemente in einem Listenverständnis möglich?
- 27. isElementPresent ist sehr langsam, falls das Element nicht existiert.
- 28. First Web API Sitzungsanforderung ist sehr langsam
- 29. ungepufferte Ausgabe Sehr langsam
- 30. Android Text zu Sprache ist sehr langsam zu initialisieren
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
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 ... –