Publication de rapports PowerBI Report Server /SSRS par scripts
Une des problématiques de nos clients sur les rapports concerne l’automatisation des publications. Celui qui n’a pas
râlé après avoir dû cliquer 15 fois sur « importer » un rapport lève la main !
Pour ceux que ça n’amuse pas (comme moi), il y a deux solutions pour les versions SSRS classiques et une autre pour les
nouvelles plates-formes (SSRS 2017 & Power BI Report Server).
Pour SSRS à partir de 2017, mais surtout pour PowerBI Report Server
Nous avons créé deux fonctions :
- la première permet de publier un item (rapport pbix, rdl , data sources , dataset),
- la seconde est récursive, c’est-à-dire qu’elle prend en entrée un répertoire et le publie.
Pour une publication unitaire, la commande est la suivante :
Pour un transfert entre serveurs
Import-Report -DestinationUri '<url_of_report_server_destination>' -TypePath URL -SourcePath '<source_path>' -DestinationPath '<destination_path>' -SourceUri '<url_od_report_server_source>'
Pour une publication à partir du disque local.
Import-Report -DestinationUri '<url_of_report_server_destination>' -TypePath FILE -SourcePath '<source_path>'
Exemple
Import-Report -DestinationUri 'http://sqlsrv:8080/reports' -TypePath URL -SourcePath 'test/HR' -DestinationPath 'Exemples/HR' -SourceUri 'http://sqlsrv:8080/reports'
Import-Report -DestinationUri 'http://sqlsrv:8080/reports' -TypePath FILE -SourcePath 'C:\Users\Administrator.THELIODEMO\Desktop\test_2.pbix'
Pour une publication d’un ensemble d’items
Import-ReportsWithConfigFile -configPath '<config_path>'
Exemple
Import-ReportsWithConfigFile -configPath C:\temp\config.json
Le fichier de configuration
Le script prenant en compte un répertoire utilise un fichier de configuration, qui est construit sur cette base :
{
"source": "<URL DU SERVEUR SOURCE>",
"destination": "<URL Du SERVEUR DESTINATION",
"reports": [
["<TYPE D'IMPORT URL ou FILE>","<CHEMIN D'ORIGINE>","<CHEMIN DE DESTINATION>"],
["<TYPE D'IMPORT URL ou FILE>","<CHEMIN D'ORIGINE>","<CHEMIN DE DESTINATION>"],
["<TYPE D'IMPORT URL ou FILE>","<CHEMIN D'ORIGINE>","<CHEMIN DE DESTINATION>"]
]
}
À noter que le paramètre source est ignoré dans le cas d’un import de fichier
Un exemple du fichier de configuration :
{
"source": "http://myServer1:8080/reports",
"destination": "http:// myServer2:8080/reports",
"reports": [
["URL","test/HR","Exemples/HR"],
["FILE","C:\\Users\\Administrator.THELIODEMO\\Desktop\\test_2.pbix","/"]
]
}
Les fonctions sont disponibles sur
https://github.com/agencethelio/ReportServer dans le fichier Publish-Reports.ps1
Pour les versions Report Server (antérieur à 2017)
Vous trouverez une fonction vous permettant de publier vos items sur
https://github.com/agencethelio/ReportServer fichier publish-Rdl.ps1
Une autre solution existe en utilisant RS (outil disponible avec SQL Server) ce qui est surtout utile pour les serveurs qui n’ont pas PowerShell
RS.EXE est présent dans le répertoire d’installation de SSRS sous le dossier :
<DOSSIER D'INSTALLATION SQL>\Microsoft SQL Server\<VERSION SQL>\Tools\Binn
L’outil RS permet d’exécuter un script dans le contexte SSRS. Sur ce postulat, cela peut publier de manière assez simple
des rapports et autres datasource, dataset.
Exemple
Dans mon exemple, vous retrouverez un batch avec un certain nombre de paramètres et le fichier de script .rss
Il permet de prendre le contenu d’un répertoire sur de votre disque pour le publier vers le Serveur SSRS défini avec varServerPath.
rs.exe -i <path_to_script> -s <url_of_report_server> -v ReportFolder="<report_folder_name>" -v DataSetFolder="<DataSet_Folder_Name>" -v DataSourceFolder="<DataSource_Folder_Name>" -v DataSourcePath="/<DataSource_Path>" -v filePath="<Path_To_Report_Server_Project_Files>" -eMgmt2010
Le batch d’appel de mon exemple est le suivant
REM Parameters
set varServerPath=<url_of_report_server>
set varReportFolder=<report_folder_name>
set varDatasetFolder=<DataSet_Folder_Name>
set varDataSourceFolder=<DataSource_Folder_Name>
set varDataSourcePath=/<DataSource_Path_Dont_Forget>
set varReportName= set varReportFilePath=\Reports
REM Command rs.exe -i publish.rss -s %varServerPath% -v ReportFolder="%varReportFolder%" -v DataSetFolder="%varDatasetFolder%" -v DataSourceFolder="%varDataSourceFolder%" -v DataSourcePath="%varDataSourcePath%" -v ReportName="%varReportName%" -v filePath="%varReportFilePath%" -e Mgmt2010
Le script RS est de la forme suivante :
https://github.com/agencethelio/ReportServer/blob/master/Publish-Reports.ps1
Si vous voulez plus d’informations sur RS vous pouvez aller sur
https://docs.microsoft.com/en-us/sql/reporting-services/tools/rs-exe-utility-ssrs
Laisser un commentaire