Reporting Services 2017 permet aux utilisateurs d’ajouter des commentaires

Dans son CTP 2.1 (17 mai 2017), Microsoft a ajouté la capacité de commenter sur les rapports SSRS du portail natif :

Comments are now available for reports. Comments allow you to add perspective to what is in a report and collaborate with others in your organization. You can also include attachments with your comment.

Je n’avais pas trouvé de captures d’écran qui démontrait la nouvelle capacité. Nous avons donc installé le CTP pour pouvoir se faire une idée sur cette nouvelle capacité.

Voici de quoi cela a l’air :

Un nouveau bouton apparaît en haut à droite :

image

Lorsqu’on clique dessus, on peut saisir le commentaire et téléverser un fichier (j’ai choisi une image et ça n’a pas fonctionné) :

image

On voit le commentaire une fois ajouté (et l’attachement qui ne fonctionne pas) :

image

Un second commentaire :

image

On peut répondre à un commentaire en particulier :

image

On peut éditer ou supprimer un commentaire existant :

image

Est-ce que vous pensez que cette fonctionnalité est utile?

Power BI Report Server est annoncé!

En janvier 2017, Microsoft avait rendu disponible une version spéciale de Reporting Services permettant de tester une version limitée de Power BI on-premises. À ce moment, il n’était pas encore établi comment il serait possible d’acheter cette nouvelle capacité.

Avec l’annonce de Power BI Premium, Microsoft a finalement annoncé la forme et la manière d’obtenir cette nouvelle fonctionnalité.

La forme

Microsoft a créé un nouveau produit appelé Power BI Report Server. Il s’agit d’un super-ensemble de Reporting Services, c’est à dire qu’il a les mêmes capacités que ce dernier en plus de supporter Power BI on-premises :

Power BI Report Server is a superset of SQL Server Reporting Services. A Power BI Report Server supports Power BI reports, *plus* all the features of an SSRS report server. So if you have a Power BI Report Server, you don’t necessarily need a separate SSRS report server.

Bref, à partir de la même instance du Report Server, il sera possible de déservir du Power BI, des rapports Mobiles (Data Zen) et des rapports paginés (*.rdl).

La manière de l’obtenir

Il y a deux manières d’obtenir ce produit :

  • En s’abonnant à Power BI Premium (minimum 6100$ / mois) on obtient automatiquement le droit d’utiliser le même nombre de “cores” on-premises ;
  • En ayant une licence SQL Server Enterprise per-Core ET un abonnement à l’assurance logiciel (active Software Assurance).

Dans tous les cas, une licence Power BI Pro sera requise pour chaque utilisateur pouvant publier du contenu …

Schéma comparatif

Ce schéma, tiré de cet article, résume bien les capacités de chaque option. L’offre Power BI Premium utilise le Power BI Service. On voit que Power BI Report Server sera fréquemment mis à jour contrairement à SQL Server.

PowerBIReportServer

Questions et réponses

Licence Power BI Pro

clip_image001

Fréquence des mises à jour

clip_image001[5]

Disponibilité d’une version d’essai et capacités initiales

image

image

Assurance logicielle nécessaire – même pour la version SQL Server 2017 à venir

clip_image001[9]

Fonctionalités orientés vers les rapports seulements

image

image

Références

Introducing Power BI Report Server for on-premises Power BI report publishing
https://blogs.msdn.microsoft.com/sqlrsteamblog/2017/05/03/introducing-power-bi-report-server-for-on-premises-power-bi-report-publishing/

Introducing Power BI Report Server
https://powerbi.microsoft.com/fr-fr/report-server/

Microsoft accelerates modern BI adoption with Power BI Premium
https://powerbi.microsoft.com/fr-fr/blog/microsoft-accelerates-modern-bi-adoption-with-power-bi-premium/

What Does Power BI Premium Mean for You?
http://prologika.com/what-does-power-bi-premium-mean-for-you/

Power BI Premium, Report Server, Apps and API
http://www.jamesserra.com/archive/2017/05/power-bi-premium-report-server-apps-and-api/

Changement de comportement important dans Reporting Services intégré en mode SharePoint

Depuis toujours, SSRS en mode intégré à SharePoint affiche un message à l’utilisateur lorsque celui-ci change la valeur d’un paramètre. Par exemple, dans le rapport suivant, si je change la valeur du paramètre A de 1 à 2, ce qui a pour effet de changer la liste des valeurs possibles dans le paramètre B, la zone de gauche se rafraîchit avec le message “Report parameter values must be specified before the report can be displayed. Choose parameter values in the parameters area and click the Apply button.” ou “Des valeurs de paramètre de rapport doivent être spécifiées pour que le rapport puisse s’afficher. Choisissez des valeurs de paramètre dans la zone de ce nom, puis cliquez sur le bouton Appliquer.” en français :

image

image

image

Et bien, depuis ces mises à jour, un développeur a décidé que cela n’étais plus une fonctionnalité mais plutôt un bogue qu’il fallait au plus vite erradiquer :

Cumulative Update 1 for SQL Server 2014 SP1
Cumulative Update 6 for SQL Server 2014
Cumulative Update 4 for SQL Server 2012 SP2

Donc, dès l’application de ces mises à jour, voici ce que l’utilisateur va obtenir suite à un changement de paramètre :

image

Le peu de détail sur le sujet se trouve sur le KB3028226 :

image

Assume that you have a report that has two or more parameters in Microsoft SQL Server 2012 Reporting Service (SSRS 2012) or SQL Server 2014 Reporting Service (SSRS 2014) in SharePoint 2010 integration mode, and the parameters have default values that are defined by function expressions. For example, the default value of Parameter1 is set by the Today () function, and Parameter2 uses another function expression as its default value. When you open the report on a SharePoint site and then try to change the value of Parameter1 or Parameter2, you receive the following error message:

Report parameter values must be specified before the report can be displayed. Choose parameter values in the parameters area and click the Apply button.

Notez qu’à moins que vous n’installiez les Cumulative Update à mesure qu’ils sortent, vous ne remarquerez ce comportement qu’à la suite de l’installation du SP3 de SQL Server 2012 ou du SP2 de SQL Server 2014.

À notre point de vue ce message permettait de clarifier l’utilisation de la zone de paramètre. Nous pensons que Microsoft aurait dû ajouter une option permettant de l’utliser ou non et peut-être même de définir le texte à utiliser. On peut toujours rêver!

Et vous, aimez-vous mieux le nouveau comportement?

 

 

Nouvelles fonctionnalités de l’outil de QA SYNTELL pour Reporting Services (SSRS)

Il y a eu beaucoup de changements dans l’outil de QA SYNTELL depuis la parution des articles suivants (2011) sur ce blogue:

Pourquoi nous avons développé un outil de test automatisé pour Reporting Services

Présentation de notre outil de test automatisé pour Reporting Services

Voici maintenant la matrice des types de jeux d’essais / type de tests supportés:

Type de jeu d’essai Intégrité Performance Multi threading Non régression Sécurité Applicative
Rapports SSRS

X

X

X

X

X

Requêtes SQL et MDX

X

X

X

X

X

Applications Web

X

X

X

X

Plus de détails:

  1. Fiche technique du produit
  2. Liste détaillée des fonctionnalités

Cet outil est actuellement utilisé chez plusieurs de nos clients pour effectuer:

  1. De la surveillance: vérification constante du bon fonctionnement des serveurs de données et applicatifs (avec notification par courriel);
  2. De l’éveil : réchauffer des serveurs applicatifs pour s’assurer que les performances seront au rendez-vous.

Et à l’interne pour faire:

  1. Des tests d’intégrité: vérification qu’aucun élément ne retourne d’erreur lors de son exécution;
  2. Des tests de performance: plusieurs faciliants pour identifier les composantes les plus lentes d’une application et faire le suivi de la performance globale d’une livraison à l’autre;
  3. Des tests de charge: s’assurer que l’application n’a pas de défaillance en multithread et qu’il n’y a pas de dégradation anormale de la performance;
  4. Des tests de non régression pour les requêtes: confirmer que les requêtes existantes retournent les même résultats lors d’une modification aux bases de données qui ne devraient pas modifier ceux-ci;
  5. Des tests de non régression sur les rapports: comparaison de l’exécution d’un jeu d’essai de rapports SSRS avec une exécution précédente. Cela se fait visuellement sous forme d’image et aussi au niveau des données XML générées par les rapports.
  6. Des tests de sécurité applicative ou personnalisation: les différentes jeux d’essai peuvent être exécutés avec différentes identités. Cela permet de tester la sécurité applicative ou la personnalisation propre à un groupe d’utilisateurs.

Une des fonctionnalités les plus appréciée de nos utilisateurs est celle qui permet de faire des tests comparatifs (non régression) sur l’exécution de rapports SSRS. Le processus est le suivant:

  1. Un analyste fonctionnel navigue dans l’application Reporting Services afin de créer un jeu d’essai significatif;
  2. L’outil de QA importe ce jeu d’essai à partir des journaux SSRS (ExecutionLogStorage) avec la possibilité d’exclure certains paramètres qui pourraient compromettre la pérennité du jeu d’essai;
    image
  3. L’analyste lance l’exécution du jeu d’essai en stockant les résultats dans la base de données (MHTML, TIFF et XML de chaque rapport);
    image
  4. Une capture instantanée (snapshot) est créée à partir de cette exécution: c’est une image figée dans le temps;
    image
  5. Une nouvelle version de rapports est publiée;
  6. Le même jeu d’essai est réexécuté sur ces nouveaux rapports;
  7. La commande permettant de comparer une exécution avec une capture instantanée est utilisée:
    image
    Il est possible de comparer un sous-ensemble à la fois:
    image
    Si un noeud est en rouge c’est qu’il y a une différence. Le programme affiche le deux exécutions (MHTML, TIFF, XML) et la différence dans le bas (visuellement pour TIFF, et texte pour XML):
    image
    Comparaison XML:
    image
    Un rapport peut être exporté sur plusieurs pages TIFF, chacune étant comparée:
    image

Imaginez tout le temps qui peut être épargné en laissant l’outil travailler pour vous. Augmentez votre confiance lors de vos livraisons!

Pour obtenir plus d’information ou pour planifier une démonstration, n’hésitez pas à entrer en contact avec nous: contact@syntell.com.

Plusieurs lecteurs de ce blogue viennent d’en dehors du Canada, une séance WebEx est possible.

Beaucoup d’actions dans Reporting Services 2016

Je suis de retour d’un mandat à temps plein de juillet à décembre à la ville de Québec. En plus de faire de l’analyse organique j’étais aussi responsable du développement en Microsoft Windows Presentation Framework (WPF), Entity Framework avec de la communication réseau TCP et du multi-threading. C’était dans le cadre du projet du Gestionnaire Artériel de la ville de Québec.

Pendant mon absence, il s’est passé beaucoup de choses du côté de Reporting Services. D’ici à ce que j’aie plus de temps, voici quelques liens:

Microsoft Business Intelligence – our reporting roadmap
SQL Server 2016: Everything built-in
Position report parameters the way you want
A closer look to report parameters position
Report rendering for modern browsers
Integrate Reporting Services into SharePoint 2016
Introducing mobile reports and a brand-new web portal
How to create Mobile Reports and KPI’s in SQL Server Reporting Services 2016 An end-to-end walkthrough
Download Microsoft® SQL Server® 2016 CTP3.1 Report Builder
Download Microsoft SQL Server Mobile Report Publisher (Public Preview 1)

Je devrais retrouver du temps pour garder ce blogue en vie,

Générer un hyperlien (url) absolu à partir de Reporting Services (SSRS)

Il est parfois nécessaire de générer un lien vers un rapport SSRS en utilisant Go to URL plutôt que Go to report:

image

Afin de ne pas coder en dur le protocole (ex. http), le serveur, la collection de sites (ex. /sites/sitecol), le site (ex. /sites/sitecol/siteparent/sitechild) et la librairie de documents (ex. /sites/sitecol/siteparent/sitechild/doclib), nous avons accès aux variables Globals!ReportFolder et Globals!ReportServerUrl.

La variable ReportServerUrl change si on est en design-time (BIDS / SSDT-BI) et une fois dans SharePoint, selon la version de Reporting Services.

Environnement

Valeur

BIDS / SSDT-BI (vide)
SSRS 2008 dans SharePoint Url vers le serveur de rapport.
Ex. http://server/ReportServer
SSRS 2012 http://server/sites/sitecol/siteparent/sitechild/_vti_bin/ReportServer

Le lien vers un rapport SSRS, intégré en mode SharePoint, doit ressembler à ceci:

http://server/sites/sitecol/siteparent/sitechild/_layouts/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/sites/sitecol/siteparent/sitechild/Reports/RPT-1.rdl

Puisque la valeur de la variable change ReportServerUrl, cela complique la vie du développeur de rapports.

Cette fonction VB.Net, qui peut directement être placée dans la section code d’un rapport, peut vous aider:

Public Function GetReportUrl(Optional ByVal sReportName As String = Nothing) As String
  Dim sUseReportFolder    As String
  Dim sUseReportServerUrl  As String
  Dim sSiteUrl            As String
  Dim sRelReportUrl       As String
  Dim sUseReportName      As String

  sUseReportFolder = Iif(String.IsNullOrEmpty(Report.Globals.ReportFolder), "http://server/sites/sitecol/site/doclib", Report.Globals.ReportFolder)
  sUseReportServerUrl = Iif(String.IsNullOrEmpty(Report.Globals.ReportServerUrl), "http://server/sites/sitecol/site/_vti_bin/ReportServer", Report.Globals.ReportServerUrl)
  sUseReportServerUrl = sUseReportServerUrl.Replace("_vti_bin/ReportServer", "")
  
  sSiteUrl = sUseReportFolder.Substring(0, sUseReportFolder.LastIndexOf("/"))
  sRelReportUrl = sUseReportFolder.Substring(sUseReportServerUrl.IndexOf("/", sUseReportServerUrl.IndexOf("//") + 2))
  sUseReportName = Iif(String.IsNullOrEmpty(sReportName), Report.Globals.ReportName, sReportName)
  
  Return String.Format("{0}/_layouts/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl={1}/{2}", sSiteUrl, sRelReportUrl, sUseReportName) 
End Function

Vous pouvez l’appeler sans paramètre pour créer un lien vers le rapport courant:

=Code.GetReportUrl()

Ou en passant le nom d’un autre rapport:

=Code.GetReportUrl(« Rpt-01.rdl »)

Le code teste si les variables sont vides et si c’est le cas, des valeurs par défaut sont utilisées. Cela permet de tester directement dans BIDS / SSDT-BI.

C’est un problème qui revient souvent.

Quelques notes sur l’authentification par formulaire avec SSRS intégré à SharePoint

Il est possible d’utiliser un mode d’authentification propriétaire dans SharePoint: il suffit de se définir un ASP.Net Membership Provider. Si vous avez aussi besoin de définir des rôles afin de faciliter l’autorisation du contenu pour les différents utilisateurs, vous devrez aussi définir un ASP.Net Role Provider.

En mode Claims (ex. avec SharePoint 2010), vous aurez besoin de modifier plusieurs Web.Config afin d’intégrer votre Membership et Role provider:

  1. Ceux de vos applications Web (ex. SharePoint – 80)
  2. Celui de SharePoint Administration
  3. Celui de Security Token Service sous SharePoint Web Services

Si vous avez plusieurs “applications SSRS” accessibles par différents types d’utilisateurs, l’idéal serait de définir des rôles (ex. Analysts, Executives etc.) et de sécuriser les sites SharePoint contenant les rapports SSRS avec ces rôles. La structure de site serait donc:

  1. Site racine (/)
  2. Sous-site pour les analystes (/Analysts) accessible uniquement pour les membres du rôle Analysts
  3. Sous site pour les exécutifs (/Executives) accessible uniquement pour les membres du rôle Executives

La navigation de SharePoint enlève automatiquement les liens vers les sites dont l’utilisateur n’ont pas accès. Par exemple, si un utilisateur n’est n’est ni dans le rôle Analysts ni dans le rôle Executives, la section “Sites and Workspaces” sera vide:

image

Si vos rapports utilisent des sources de données XML (ex. sur un fichier de configuration), vous devrez stocker ces fichiers statiques dans un site SharePoint où l’accès anonyme a été autorisé. La raison est que les sources de données XML supportent uniquement l’authentification Windows ou Anonyme. Il n’est pas possible d’utiliser une identité stockée (ex. compte de service) avec ce type de connexion.

Donc notre site racine permettrait l’accès anonyme et contiendrait une librairie de documents contenant ces fichiers statiques. Les sources de données XML référeraient à ces fichiers en mode anomyme:

  1. L’application Web doit permettre l’accès anonyme:

    image

  2. Le site racine doit permettre l’accès anonyme:

    image

    image

  3. La source de données XML doit être en mode anonyme:

    image

  4. Les utilisateurs doivent s’authentifier pour accéder aux rapports:

    image

    image

    Autrement, ils auront cette erreur:

    image

    Reporting Services does not support anonymous user from a SharePoint site. To view Reporting Services reports, choose a SharePoint site that does not have Anonymous access enabled or sign in on an anonymous site.

Si vous utilisez des sources de données vers des bases de données Analysis Services (SSAS) et que celles-ci utilisent la sécurité de données vous pourrez utiliser cette technique:

  1. Un compte Active Directory devra être créé pour représenter un rôle dans la base de données SSAS (ex. Analysts et Executives).
  2. Une composante (ex. procédure stockée SQL) devra être capable de faire correspondre un utilisateurs formulaire vers un rôle (ex. Analyste1 est dans le rôle Analysts).
  3. Les rapports définissent des connexions directement dans le rapport (et non dans une source de données partagée) afin de pouvoir utiliser une expression qui ajoute EffectiveUserName=Analysts|Executives à la fin. Le rapport appelle la composante en #2 pour obtenir le nom du compte Windows à utiliser dans EffectiveUserName.
  4. L’identité d’un compte de service, administrateur de l’instance SSAS, devra être utilisée pour la connexion. C’est requis afin d’être en mesure d’utiliser EffectiveUserName.

J’en parle avec plus de détails dans mon article intitulé: Authentification par formulaire, SharePoint, SSRS et sécurité des données dans SSAS

SYNTELL a réalisé plusieurs mandats où l’on devait intégrer l’authentification propriétaire du client au sein d’une solution Microsoft BI.

Références

Claims Walkthrough: Creating Forms-Based Authentication for Claims-Based SharePoint 2010 Web Applications Using ASP.NET SQL Membership and Role Providers
https://msdn.microsoft.com/en-us/library/office/gg252020%28v=office.14%29.aspx

Forms Authentication in SharePoint Products and Technologies (Part 2): Membership and Role Provider Samples
https://msdn.microsoft.com/en-us/library/office/bb975135%28v=office.12%29.aspx

XML Connection Type (SSRS)
https://msdn.microsoft.com/fr-ca/library/dd220468.aspx?f=255&MSPPError=-2147217396