2009-08-26 8 views
1

Unsere Anwendung verwendet SQL Server Reporting Services und ermöglicht Benutzern, benutzerdefinierte Filter zu Berichten hinzuzufügen. Dazu ändern Sie den RDL und laden dann den geänderten RDL auf den Server, um einen neuen Bericht zu erstellen. Das Problem besteht darin, dass der Bericht nach dem einmaligen Ausführen des Berichts nicht mehr benötigt wird. es ist wirklich nur ein temporärer Bericht. Offensichtlich würde dies schließlich dazu führen, dass viele temporäre Berichte herumliegen. Wir brauchen eine Möglichkeit, diese zu reinigen.Temporäre SSRS-Berichte bereinigen

Wir haben bereits über externe Methoden nachgedacht wie das Erstellen eines Service oder Jobs, um die Berichte regelmäßig zu löschen, und das ist wahrscheinlich, was wir tun werden, wenn wir uns nicht etwas besseres einfallen lassen. Was wir uns fragen ist, bietet SSRS selbst eine bessere Möglichkeit, dies zu tun? Wir haben darüber nachgedacht, eine zwischengespeicherte Instanz irgendwie zu verwenden, die ablaufen würde, aber das scheint nur bei einer ausgeführten Instanz eines Berichts zu funktionieren, nicht bei dem Bericht selbst. Soweit ich das beurteilen kann, gibt es keine Möglichkeit, einen Bericht zum Ablauf zu bringen. Gibt es eine andere Möglichkeit, SSRS dazu zu bringen, für uns aufzuräumen?

Das sofortige Löschen des Berichts ist keine Option, da unsere Ausführung asynchron ist.

Antwort

2

Eingebaut, es gibt nichts. Aber etwas selbst zu schreiben ist einfach genug.

Versuchen Sie, einen Prozess zu haben, der Ihren Berichtskatalog nach solchen abfragt, die älter als eine halbe Stunde (oder so) sind. Sie können sogar ReportServerTempDB hinzufügen, um zu sehen, ob sie noch eine aktive Sitzung haben (in diesem Fall ignorieren Sie sie ein wenig länger).

Sobald Sie sie gefunden haben, ist es einfach, die Web-Service-Oberfläche zu verwenden und sie aus dem Katalog zu löschen.

Aber ... Ich würde tatsächlich einen besseren Weg zur Bereitstellung des benutzerdefinierten Filters mit Code suchen. Sicher können Sie den Filter als Parameter bereitstellen und den VB-Code innerhalb des Berichts verwenden, um das, was der Benutzer bereitstellt, in etwas zu konvertieren, das für jede Zeile ausgewertet werden kann.

Rob

+0

Guter Tipp zum Überprüfen der aktiven Sitzung in der Temp-DB. Was die Verwendung von eingebettetem Code im Bericht betrifft, ist dies ein guter Gedanke, wird aber wahrscheinlich nicht für unser Szenario funktionieren. Eine Anforderung ist, dass unsere Endbenutzer sehr einfach eigene Berichte erstellen können. Sie werden wahrscheinlich nicht fliegen, wenn sie Code für ihre Berichte schreiben müssen. Ich frage mich auch, welche Auswirkungen der Code auf die Leistung hat, wenn man jede Zeile bewertet. –