Publication de rapports PowerBI Report Server /SSRS par scripts

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


        

Partager cette publication