2008-11-10 3 views
27

Wir haben einige SQL Server Reporting Services-Berichte. Ich habe damals nicht geschrieben, aber ich muss auf sie aufpassen.SQL-Server-Reporting-Dienste: Wie ein Bericht ausgelöst wird, wenn er geöffnet

Diese Berichte werden ausgelöst, wenn sie im Browser geöffnet werden, und mit den Standardparametern (Suchbegriffe und Einschränkungen sind leer) rufen sie viele Daten ab, was langsam ist. Der Kunde würde bevorzugen, dass der Bericht nicht generiert wird, bis der Benutzer Parameter eingibt und "view report" drückt

Leider kenne ich SSRS überhaupt nicht gut - wie kann ich den Bericht davon abhalten zu schießen, wenn es geöffnet ist?


Die Einzelheiten, wie es auf einem entfalteten Bericht zu tun (wie pro Antwort Rihan Meij ist) ist wie folgt:

Klicken Sie auf einen Bericht, klicken Sie auf „Eigenschaften“ an der Spitze. Möglicherweise müssen Sie etwas warten, da der langsame Bericht jetzt ausgeführt wird. Klicken Sie dann auf "Parameter" auf der linken Seite.

Stellen Sie für jeden Parameter sicher, dass "Prompt User" aktiviert ist und für mindestens einen Parameter "Has Default" nicht aktiviert ist. Klicken Sie erneut oben links auf "Ansicht" (oder gehen Sie zurück zum Ordner und klicken Sie auf den Berichtsnamen), um den Bericht anzuzeigen, und beachten Sie, dass der Bericht nicht sofort ausgelöst wird.

Im Report Builder können Sie dies über das Menü "Filter" tun. Wählen Sie Werte aus mindestens einem Filter aus, und speichern Sie den Bericht.

Ist es auch möglich, Berichte vom Brennen beim Laden zu stoppen, wenn der Bericht keine Parameter enthält?

+5

Es ist gut, dass Sie es im Text erklärt haben, weil keiner der unten aufgeführten Links zu Screenshots mehr funktioniert. – Bratch

Antwort

13

Ich fand, dass ich zumindest eines der Berichtsparameter einzustellen hatte keinen Standard haben den Bericht von selbststartenden zu halten.

Ich hatte diese Konfiguration zu verwenden (beachten Sie, dass alle drei der Parameter I ohne Ausfälle links Nulls akzeptieren, so dass die Benutzer nur die Null-Kontrollkästchen klicken können):

[Screenshots fehlt]

die bekommen Benutzer, dies zu sehen und den Bericht von selbststartenden zu halten:

[Screenshots fehlt]

+2

Vital Informationen in diesem Beitrag ist weggeräumt aufgrund externer Links zu brechen. Bitte stelle die fehlenden Screenshots wieder her, wenn du kannst. – deceze

3

Ich habe das getan, indem ich meine Abfrage leicht änderte, um Parameter zu verlangen, wenn es ausgeführt wird.

Ich habe dann, nachdem ich den Bericht auf der Berichtswebsite veröffentlicht habe, angegeben, dass der Parameter den Benutzer auffordern soll. Dies hat den Effekt, dass der Bericht den SQL-Server nicht in die Knie zieht, wenn Benutzer den Bericht einfach öffnen, um ihn zu sehen.

Siehe attached screenshot (ein Bild mehr als tausend Worte sagt, richtig :))

+4

Blockierte Verbindung 12 – Mike

+0

Ihr Link ist tot in der "beigefügten Screenshot" –

1

fand ich die beste Art und Weise in einen Parameter hinzuzufügen, war die nicht NULL-Werte zulässt, sondern durch den Bericht nicht verwendet wird. Dadurch wird das Rendern beim Start verhindert, der Bericht wird jedoch nicht beeinflusst.

Die einzige negative Seite ist, wenn Sie den Bericht in einem Bericht-Viewer anzeigen, haben Sie eine Box an der Spitze, die ein bisschen seltsam aussieht. Ich bin sicher, dass Sie C#/CSS verwenden können, um es zu verstecken.

Da ich keinen Report Viewer zur Anzeige verwende, nur um am Backend zu rendern, betrifft mich das nicht.

Auch wenn Sie einen Bericht-Viewer verwenden, ist es hilfreich bei der Entwicklung!

1

Ich tat dies, indem ich nur einen Standardwert für den Schlüsselparameter lieferte, der keine Ergebnisse zurückgibt.

+0

Wenn Ihr Schlüsselparameter beispielsweise Abteilungsnamen als Text verwendet, geben Sie einfach den Standardwert als "NO-AUTO-RUN" an, damit das Dataset keine Ergebnisse liefert. – George

+0

Einfachste und brilliant - danke. Das heutige Beispiel - ein Datumsbereich - Ich habe das Standardjahr des "toDate" in der Vergangenheit verlassen: fromDate default = 7/1/2015 und toDate default = 6/30/2014 ... und rate mal was? Nichts ist in * diesem * Datumsbereich passiert;) Wenn also der Bericht zum ersten Mal ausgeführt wird, gibt er schnell keine Zeilen zurück. Dann kann der Benutzer beide Datumsparameter bearbeiten und den Bericht anzeigen. –

2

Ich weiß, dass dieser Beitrag ein bisschen alt ist, aber da ich eine andere Lösung hier habe, poste ich es nur für den Fall, dass jemand es braucht.

Wenn Sie ReportViewer verwenden, können Sie die Eigenschaft ShowBody = "False" festlegen. Ändern Sie dann im OnSubmittingParameterValues-Ereignis die ShowBody-Eigenschaft in true. Dann benötigen Sie keine zusätzlichen Parameter oder Parameter ohne Standardwert im Bericht.

<rsweb:ReportViewer 
     ID="rv" 
     runat="server" 
     Width="100%" 
     Height="100%" 
     SizeToReportContent="false" 
     ZoomMode="PageWidth" 
     KeepSessionAlive="true" 
     ProcessingMode="Remote" 
     PromptAreaCollapsed="false" 
     InteractivityPostBackMode="AlwaysAsynchronous" 
     AsyncRendering="true" 
     ExportContentDisposition="AlwaysInline" 
     ShowReportBody="False" 
     ShowPrintButton="false" 
     OnSubmittingParameterValues="rv_SubmittingParameterValues"/> 

Und dann in der rv_SubmittingParameterValues ​​Methode:

this.rv.ShowReportBody = true; 
3

habe ich den Standardwert eines meiner Parameterauswahl auf einen Wert von -1, die nicht existiert (kein gültiger Parameterwert). Dies hat keinen Fehler verursacht. Es stellte einfach das Parameter-Dropdown-Feld auf und verhinderte die Ausführung des Berichts. Ich konnte keinen Standardwert von NULL verwenden, weil NULL alles auswählt, und ich wollte, dass der Benutzer absichtlich die Auswahl ALL (NULL) trifft, bevor der Bericht ausgeführt wird. Es dauert einige Minuten, bis der Bericht gerendert wird, wenn ALL ausgewählt ist.

+0

wirklich nützlich Trick –

1

Ich habe einen schönen Trick dafür gefunden, wenn ich mit Berichten arbeite, die optionale Felder haben, aber eine große Menge an Daten ziehen, wenn die optionalen Felder leer sind.

Schritt 1: Prevent Auto Firing

  • Achten Sie darauf, „Erlaube Nullwert“ ist nicht für die optionalen Parameter aktiviert
  • Sicherstellen, dass kein Standardwert für die optionalen Parameter ist

Schritt 2: Parameter ohne Option 'Null' optional machen

  • Aktivieren "Leerwert zulassen" f oder die optionalen Parameter
  • Ändern Sie bitte Ihre where-Klausel für die optionalen Parameter WHERE (@param="" OR column = @param)

Mit dieser Methode gibt ist, werden zusätzliche Felder für die Endbenutzer zu befürchten, der Bericht wird erst ausgelöst, wenn es angefordert wird, und die Bedingungen in der Where-Klausel werden nicht ausgewertet, wenn das Textfeld leer bleibt.


Hinweis: Wenn der Bericht Verfügbare Werte gibt dann einen Wert, der nicht gültig für Ihre Tabellenstruktur ist, kann anstelle von „“ verwendet werden, können Sie auch mit anderen Datentypen (non-string) auf diese Weise verwenden