Ich habe einen SSRS-Bericht, der eine gespeicherte Prozedur aufruft. Wenn ich die gespeicherte Prozedur direkt in einem Abfragefenster ausführe, wird sie in weniger als 2 Sekunden zurückgegeben. Die Ausführung derselben Abfrage aus einem SSRS-Bericht von 2005 dauert jedoch bis zu 5 Minuten. Dies geschieht nicht nur beim ersten Durchlauf, sondern jedes Mal. Außerdem sehe ich dieses Problem in anderen Umgebungen nicht.
Irgendwelche Ideen, warum der SSRS-Bericht in dieser speziellen Umgebung so langsam laufen würde?
Antworten:
Vielen Dank für die hier gegebenen Vorschläge. Wir haben eine Lösung gefunden und es stellte sich heraus, dass sie mit den Parametern zusammenhängt. SQL Server erstellte einen komplizierten Ausführungsplan, als er aus dem SSRS-Bericht aufgrund von "Parameter-Sniffing" ausgeführt wurde. Die Problemumgehung bestand darin, Variablen innerhalb der gespeicherten Prozedur zu deklarieren und die eingehenden Parameter den Variablen zuzuweisen. Dann verwendete die Abfrage die Variablen anstelle der Parameter. Dies führte dazu, dass die Abfrage unabhängig vom Aufruf von SQL Server Manager oder über den SSRS-Bericht konsistent ausgeführt wurde.
quelle
Fügen Sie dies am Ende Ihres Prozesses hinzu:
option(recompile)
Dadurch wird der Bericht fast so schnell ausgeführt wie die gespeicherte Prozedur
quelle
Ich werde hinzufügen, dass ich das gleiche Problem mit einer nicht gespeicherten Prozedurabfrage hatte - nur eine einfache select-Anweisung. Um dies zu beheben, habe ich eine Variable in der SQL-Anweisung des Datasets deklariert und sie dem SSRS-Parameter gleichgesetzt.
Was für eine nervige Problemumgehung! Trotzdem, ich danke Ihnen allen, dass Sie mich der Antwort nahe gebracht haben!
quelle
Ich hatte das gleiche Problem, hier ist meine Beschreibung des Problems
"Ich habe eine Speicherprozedur erstellt, die 2200 Zeilen generiert und in fast 2 Sekunden ausgeführt wird. Nachdem ich jedoch die Speicherprozedur von SSRS 2008 aufgerufen und den Bericht ausgeführt habe, der tatsächlich nie ausgeführt wurde, muss ich letztendlich die BIDS (Business Intelligence Development Studio) beenden." vom Task-Manager ".
Was ich versucht habe: Ich habe versucht, den SP über den Reportuser Login auszuführen, aber SP lief auch für diesen Benutzer normal. Ich habe den Profiler überprüft, aber nichts hat funktioniert.
Lösung:
Tatsächlich besteht das Problem darin, dass SP zwar das Ergebnis generiert, die SSRS-Engine jedoch Zeit benötigt, um diese vielen Zeilen zu lesen und wiederzugeben. Also habe ich die Option WITH RECOMPILE in SP hinzugefügt und den Bericht ausgeführt. In diesem Moment geschah ein Wunder und mein Problem wurde gelöst.
quelle
Ich hatte das gleiche Szenario. Sehr einfacher Bericht, der SP (der nur 1 Parameter benötigt) brauchte 5 Sekunden, um 10.000 Datensätze zurückzubringen, aber der Bericht würde 6 Minuten dauern, um ausgeführt zu werden. Laut Profiler und der RS ExecutionLogStorage-Tabelle verbrachte der Bericht seine ganze Zeit mit der Abfrage. Der Kommentar von Brian S. führte mich zu der Lösung. Ich habe einfach WITH RECOMPILE vor der AS-Anweisung im SP hinzugefügt, und jetzt entspricht die Berichtszeit ziemlich genau der SP-Ausführungszeit.
quelle
Ich habe in den Tablix-Eigenschaften einfach die Option "Kopfzeilenspalten auf jeder Seite wiederholen" deaktiviert.
quelle
Wenn Ihre gespeicherte Prozedur Verbindungsserver oder OpenQuery verwendet , können diese schnell von selbst ausgeführt werden, das Rendern in SSRS dauert jedoch lange. Einige allgemeine Vorschläge:
Ich sehe, dass die Frage beantwortet wurde. Ich füge dies nur hinzu, falls jemand das gleiche Problem hat.
quelle
Ich hatte Probleme mit der HTML-Ausgabe des Berichts beim Abrufen von 32000 Zeilen. Die Abfrage lief schnell, aber die Ausgabe in den Webbrowser war sehr langsam. In meinem Fall musste ich "Interaktives Paging" aktivieren, damit der Benutzer die erste Seite sehen und eine Excel-Datei generieren konnte. Der Vorteil dieser Lösung ist, dass die erste Seite schnell angezeigt wird und der Benutzer einen Export nach Excel oder PDF generieren kann. Der Nachteil ist, dass der Benutzer nur die aktuelle Seite scrollen kann. Wenn der Benutzer mehr Inhalt sehen möchte, muss er Navigationsschaltflächen über dem Raster verwenden. In meinem Fall akzeptierte der Benutzer dieses Verhalten, da der Export nach Excel wichtiger war.
Um "Interaktives Paging" zu aktivieren, müssen Sie auf den freien Bereich im Berichtsbereich klicken und die Eigenschaft "InteractiveSize" \ "Höhe" auf Berichtsebene im Eigenschaftenbereich ändern. Setzen Sie diese Eigenschaft auf einen anderen Wert als 0. In meinem Fall habe ich 8,5 Zoll festgelegt. Stellen Sie außerdem sicher, dass Sie die Eigenschaft "Wenn möglich auf einer Seite zusammenhalten" auf Tablix-Ebene deaktiviert haben (klicken Sie mit der rechten Maustaste auf Tablix, dann auf "Tablix-Eigenschaften" und dann auf "Allgemein" \ "Seitenumbruchoptionen").
quelle
Ich bin auf ein ähnliches Problem gestoßen, bei dem meine gespeicherte Prozedur schnell aus Management Studio ausgeführt wurde, aber sehr langsam aus SSRS. Nach einem langen Kampf löste ich dieses Problem, indem ich die gespeicherte Prozedur physisch löschte und neu erstellte. Ich bin mir der Logik dahinter nicht sicher, aber ich gehe davon aus, dass dies an der Änderung der Tabellenstruktur liegt, die in der gespeicherten Prozedur verwendet wird.
quelle
Ich stand vor dem gleichen Problem. Für mich war es nur, die Option zu deaktivieren:
Des SSRS-Berichts. Es wurde versucht, alle Datensätze auf derselben Seite zu platzieren, anstatt viele Seiten zu erstellen.
quelle
Abgesehen von dem Problem des Parameter-Sniffing habe ich festgestellt, dass SSRS bei der clientseitigen Verarbeitung im Allgemeinen langsamer ist als (in meinem Fall) Crystal Reports-Berichte. Die SSRS-Engine scheint einfach nicht so leistungsfähig zu sein, wenn viele Zeilen lokal gefiltert oder aggregiert werden müssen. Zugegeben, dies sind Probleme beim Entwurf von Ergebnismengen, die häufig behoben werden können (allerdings nicht immer, wenn die Details für einen Drilldown erforderlich sind), aber die ausgereiftere ... Berichts-Engine ist verzeihender.
quelle
In meinem Fall musste ich nur das SSMS trennen und verbinden. Ich habe die Abfrage profiliert und die Ausführungsdauer betrug 1 Minute, obwohl die Abfrage selbst weniger als 2 Sekunden dauert. Die Verbindung wurde neu gestartet und erneut ausgeführt. Diesmal zeigte die Dauer die korrekte Ausführungszeit an.
quelle
Einige Dinge, die Sie tun können, ohne den eigentlichen Bericht auszuführen, führen Sie den Sproc einfach auf der Registerkarte "Daten" der Berichtsdienste aus. Dauert es noch zeit Eine andere Möglichkeit besteht darin, SQL Profiler zu verwenden und zu bestimmen, was in das Datenbanksystem ein- und ausgeht.
Sie können es auch testen, um einen einfachen Bericht ohne Parameter neu zu erstellen. Führen Sie den Bericht aus und prüfen Sie, ob er einen Unterschied macht. Es kann sein, dass Ihr RS-Bericht beschädigt oder schlecht geformt ist, was dazu führen kann, dass das Rendern sehr langsam ist.
quelle
Hatte das gleiche Problem und behebt es, indem dem freigegebenen Dataset ein Standardparameter zugewiesen und dieses Dataset auf dem Berichtsserver aktualisiert wird.
quelle
Verwenden Sie "Gruppieren nach" in der SSRS-Tabelle?
Ich hatte einen Bericht mit 3 nach Feldern gruppierten Berichten und bemerkte, dass der Bericht trotz einer leichten Abfrage sehr langsam lief, bis zu dem Punkt, an dem ich nicht einmal Werte im Suchfeld wählen kann.
Dann habe ich die Gruppierungen entfernt und jetzt wird der Bericht in Sekundenschnelle angezeigt und alles funktioniert sofort.
quelle
Ich konnte dies lösen, indem ich das eingebaute Feld [& TotalPages] von unten entfernte. Die Zeit, in der von Minuten auf weniger als eine Sekunde gesunken ist.
Etwas Seltsames, das ich nicht feststellen konnte, hatte Auswirkungen auf die Berechnung der Gesamtseiten.
Ich habe SSRS 2012 verwendet.
quelle
In unserem Fall war kein Code erforderlich.
Hinweis von unserem Helpdesk: "Durch Löschen Ihrer Interneteinstellungen wird dieses Problem behoben."
Vielleicht bedeutet das "Cache leeren".
quelle