Donnerstag, 14. April 2011

Reporting Services Skripte nutzen für die Bereitstellung von Reports

Hier aktuell eine Notiz aus dem Feld zu den Reporting Services.

Vielen Kunden als auch Kollegen ist es nicht bekannt, dass die Reporting Services auch auf sehr einfache Art und Weise per Skript-Sprache genutzt werden können. Daher hier ein kleines Beispiel dazu.

Den SQL Server Reporting Services liegt ein Kommandozeilentool namens RS.EXE bei. Dieses kann sowohl für administrative Aufgaben als für die Bereitstellung von Reports genutzt werden. Gerade das Skript (Batch) gesteuerte Erstellen von Reports in einem der Exportformate (z. B. PDF, XLS, DOC… ) ist für viele Kunden attraktiv. Wie kann so etwas umgesetzt werden?

Es wird auf jeden Fall eine RSS Datei benötigt! RSS steht in diesem Fall für Reporting Services Script. :-)

Hier der Inhalt einer Datei mit dem Namen “process.rss”, welche ich mit Notepad erstellt habe. Wie man sieht, ist das Ganze ein VBA Dialekt. Dieses einfache Beispiel rendert einen Report im PDF Format, für den das RDL File auf dem Report Server im Pfad “/Vertrieb/Demo” liegt. Das PDF wird direkt auf einem Fileshare im Pfad “f:\output\demo.pdf” erzeugt.

Public Sub Main()
  Dim fileName as String = "f:\output\demo.pdf"
  Dim reportPath as String = "/Vertrieb/Demo"
  Dim results() as Byte

  rs.LoadReport(reportPath, Nothing)

  results = rs.Render("PDF",  Nothing, Nothing, Nothing, Nothing,  Nothing, Nothing)

  Dim stream  As FileStream = File.OpenWrite(fileName)
  stream.Write(results, 0, results.Length)
Exec  stream.Close()
End Sub

Ausgeführt wird dieses kleine Skript mit folgender Kommandozeile:

rs.exe –i process.rss –s http://localhost/ReportServer –e Exec2005

Diese kann entweder direkt oder als Teil eines Batches und/oder zeitgesteuert ausgeführt werden. Allein schon mit diesem einfachen Skript lassen sich eine ganze Menge von Anforderungen in komplexeren Projekten “erschlagen” ohne extra dafür ein Tool in .NET zu erstellen! Wobei, ich mag ja .NET…

Viel Spaß beim Ausprobieren!