Dans le cas présent, nous supposons que la datasource est déjà déployée et qu'elle ne nécéssite pas de redéploiement.
- La première chose à faire est de créer un fichier bat (Ex:"mon_bat.bat") qui nous permettra de lancer et de paramétrer le déploiement des rapports (code disponible à la fin de l'article).
- Il faut ensuite créer le fichier script "mon_script.rss". Ce fichier contient le code VB de déploiement des rapports. Il contient également la liste des rapports à déployer.
- Le nom du projet SSRS
- Le nom du serveur cible
- Le chemin vers le fichier de déploiement (.rss)
- Le chemin vers le dossier contenant l'ensemble des rapports rdl
- Le nom du dossier cible 1 sur le serveur de rapports
- Le nom du dossier cible 2 sur le serveur de rapports
- Le nom et le chemin de la source de données dans le serveur de rapports
- La liste des noms des rapports à déployer (dans le fichier .rss)
@ECHO off
SET PROJET=Mon_Projet
SET ScriptPATH=D:\0-Projets\Tuto\2-Scripts_Deploiement\1-Script_Deploy_SSRS.rss
SET RapportsPATH=D:\0-Projets\Tuto\1-SSRS\MonProjetSSRS\
SET DossierA=mon_dossier_cible_1
SET DossierB=mon_dossier_cible_2
ECHO.
ECHO 1. Serveur
local
ECHO 2. Serveur de
prod XXXX
SET /p ServeurType=Choisir le
serveur cible:
IF "%ServeurType%"=="1" SET TargetServer=http://localhost/reportserver
IF "%ServeurType%"=="2" SET TargetServer=http://XXXX/reportserver
IF NOT "%ServeurType%"=="" GOTO Erreur
ECHO.
Echo Deploiement
des rapports du projet: %PROJET%
ECHO Sur le serveur
cible: %TargetServer%
ECHO On Continue ?
Pause
ECHO.
ECHO 1. Rapports
destination cible = %DossierA%
ECHO 2. Rapports
destination cible = %DossierB%
SET /p RapportType=Choisir le type
de rapport a deployer:
IF "%RapportType%"=="1" GOTO EnCours
IF "%RapportType%"=="2" GOTO Valide
IF NOT "%RapportType%"=="" GOTO Erreur
GOTO FIN
:EnCours
rs -i %ScriptPATH% -s %TargetServer% -v RapportsPATH=%RapportsPATH% -v RapportType=%RapportType% -v parentFolder=%DossierA%
ECHO.
GOTO FIN
:Valide
rs -i %ScriptPATH% -s %TargetServer% -v RapportsPATH=%RapportsPATH% -v RapportType=%RapportType% -v parentFolder=%DossierB%
ECHO.
GOTO FIN
:Erreur
ECHO Mauvaise
saisie
GOTO FIN
:FIN
pause
exit
Voici le code du fichier mon_script.rss (VB):
'Fic:
mon_script.rss
Dim definition As [Byte]()
= Nothing
Dim warnings As Warning()
= Nothing
Dim parentPath As String = "/" +
parentFolder
Public Sub Main()
'Cr&ation
si necéssaire du dossier cible
Try
rs.CreateFolder(parentFolder,
"/", Nothing)
Console.WriteLine("Parent
folder {0} created successfully", parentFolder)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
rs.Credentials =
System.Net.CredentialCache.DefaultCredentials
'Publication
des rapports
IF RapportType =
1 THEN
'Liste des rapports à publier dans le
dossier cible 1
PublishReport("my_repport_1")
PublishReport("my_repport_2")
END IF
IF RapportType =
2 THEN
'Liste des rapports à publier dans le
dossier cible 2
PublishReport("my_repport_3")
PublishReport("my_repport_4")
END IF
End Sub
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Public Sub PublishReport(ByVal reportName As String)
Try
Dim stream As FileStream = File.OpenRead(RapportsPATH
+ reportName + ".rdl")
definition = New [Byte](stream.Length
- 1) {}
stream.Read(definition, 0, CInt(stream.Length))
stream.Close()
Catch e As IOException
Console.WriteLine(e.Message)
End Try
Try
warnings = rs.CreateReport(reportName,
parentPath, True, definition, Nothing)
If Not (warnings Is Nothing) Then
Dim warning As Warning
For Each warning In warnings
Console.WriteLine(warning.Message)
Next warning
Else
Console.WriteLine("Report:
{0} published successfully with no warnings", reportName)
End If
'Attachement de la datasource
Dim Item1 as DataSourceReference = New
DataSourceReference
Item1.Reference = TargetDataSource
Dim datasources As [DataSource]()
= rs.GetItemDataSources(parentPath + "/" +
ReportName)
datasources(0).Item =
Item1
rs.SetItemDataSources(parentPath +
"/" +
ReportName, datasources)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End
Sub
Aucun commentaire:
Enregistrer un commentaire