Generer rapport med SSIS

Nogle gange kan det være en fordel at få Reporting Services til at danne en rapport, og gemme den på en netværksplacering i et bestemt format. Det er selvfølgelig muligt at bruge den indbyggede scheduleringsfunktion i Reporting Services, men hvad nu hvis vi gerne vil danne en rapport i forbindelse med afviklingen af en SSIS-pakke? Det kunne f.eks. være en rapport til overvågning af et større ETL job, eller tilsvarende.

Her beskrives en metode til at downloade og gemme en rapport med SSIS. Eksemplet er beregnet på SQL Server 2008 R2, men burde også fungere på SQL Server 2012.

Rapport URL

Når man først har udgivet sin rapport på en Reporting Services server, kan man downloade rapporten ved at navigere ind på en passende URL, f.eks.:

http://rs.biblog.dk/ReportServer?/MineRapporter/Rapport1&rs:Format=excel

Her er rs.biblog.dk hostnavnet på vores server og “ReportServer” er navnet på vores Reporting Server instans. /MineRapporter/Rapport1 er stien og navnet på vores rapport og rs:Format=excel angiver hvilket format vi vil downloade rapporten i. Andre muligheder er:

  • rs:Format=xml
  • rs:Format=csv
  • rs:Format=pdf
  • rs:Format=word
  • rs:Format=mhtml (webarkiv)
  • rs:Format=image (TIFF billedformat)

 Download fil med SSIS

Der findes desværre ikke nogen standard task i SSIS, der gør det muligt at downloade en fil via http og efterfølgende gemme den på en filplacering. Men takket være HTTP Connection Manageren og Script Tasks, er det ret nemt at komme omkring alligevel.

Step 1) Tilføj en HTTP Connection Manager til din SSIS-pakke. Højreklik i Connection Managers, vælg “New Connection…” og find HTTP Connection Manageren på listen (se figuren herunder), tryk “Add…”.

add_SSIS_connection_manager

SSIS har mange forskellige indbyggede Connection Managers. Vi har brug for HTTP i dette eksempel.

Step 2) Indtast URL’en til at downloade rapporten som beskrevet i afsnittet ovenfor og tryk “OK”.

HTTP Connection Manager Editoren giver mulighed for at tilpasse den måde hvorpå forbindelse oprettes. F.eks. kan der indtastes credentials, hvis adgangen til rapportserveren er begrænset med brugernavn og adgangskode.

HTTP Connection Manager Editoren giver mulighed for at tilpasse den måde hvorpå forbindelse oprettes. F.eks. kan der indtastes credentials, hvis adgangen til rapportserveren er begrænset med brugernavn og adgangskode.

Step 3) Jeg foreslår at oprette en variabel til at indeholde stien og filnavnet på destinationen for den downloadede rapport. Opret en ny variabel, kald den noget meningsfyldt, f.eks. “ReportDestination”. Indsæt herefter en Script Task i dit Control Flow.

Man kan med fordel benytte expressions i ReportDestination variablen, f.eks. så filnavnet kommer til at indeholde dags dato.

Man kan med fordel benytte expressions i ReportDestination variablen, f.eks. så filnavnet kommer til at indeholde dags dato.

Step 4) Dobbeltklik på dit Script Task, tilføj din variabel til listen “ReadOnlyVariables” og tryk på “Edit Script…”. Indsæt herefter følgende C# kode i Main()-metoden:

I linje 3 herover angiver true at eksisterende filer med samme navn blot skal overskrives. Ønsker man ikke dette, sætter man dette argument til false i stedet. Husk at rette navnet på variablen og HTTP Connection Manageren til, i tilfælde af at de hedder noget andet end i eksemplet her. Gem og luk Script Editoren, tryk “OK” i Task Editoren og kør SSIS-pakken. Hvis alt gik godt, skulle der gerne være dannet en rapport på den angivne placering.

Daniel Otykier
Member since November 20, 2016

Comments

    Your email address will not be published. Required fields are marked *