Published on

April 21, 2015

SQL Server Reporting Services: Génération de rapports d’utilité pour les abonnements

Lorsque vous travaillez avec des solutions SQL Server Reporting Services (SSRS) qui impliquent de nombreux abonnements, il peut être bénéfique d’inclure des rapports d’utilité qui fournissent des informations sur ces abonnements. Ces rapports peuvent offrir des informations précieuses sur qui reçoit quoi, quand, dans quel format, et même inclure des détails sur les abonnements échoués. Dans cet article, nous explorerons une paire de requêtes qui peuvent être utilisées contre la base de données ReportServer pour générer des rapports internes pour un inventaire des abonnements aux rapports et des abonnements aux rapports échoués.

Inventaire des abonnements aux rapports

Le premier rapport d’utilité dont nous discuterons est l’inventaire des abonnements aux rapports. Ce rapport fournit aux utilisateurs métier une liste précise et à jour de tous les abonnements et de leurs détails associés. En interrogeant directement les métadonnées du ReportServer, ce rapport garantit que les informations sont toujours à jour et reflètent l’état en direct des abonnements.

Voici un exemple de requête qui peut être utilisée pour générer l’inventaire des abonnements aux rapports:

SELECT Catalog.Name AS NomRapport,
       'http://votreserveur/Reports/Pages/Report.aspx?ItemPath=' + Catalog.Path + '&SelectedTabId=PropertiesTab&SelectedSubTabId=SubscriptionsTab' AS UrlGestionAbonnementRapport,
       Subscriptions.Description AS DescriptionAbonnement,
       Subscriptions.LastStatus AS DernierStatut,
       Subscriptions.LastRunTime AS DernièreExécution,
       CASE next_run_date
           WHEN 0 THEN NULL
           ELSE SUBSTRING(CONVERT(VARCHAR(15), next_run_date), 1, 4) + '/' + SUBSTRING(CONVERT(VARCHAR(15), next_run_date), 5, 2) + '/' + SUBSTRING(CONVERT(VARCHAR(15), next_run_date), 7, 2)
       END AS 'Prochaine date d'exécution',
       CASE
           WHEN LEN(next_run_time) = 3 THEN CAST('00:0' + LEFT(RIGHT(next_run_time, 3), 1) + ':' + RIGHT(next_run_time, 2) AS CHAR(8))
           WHEN LEN(next_run_time) = 4 THEN CAST('00:' + LEFT(RIGHT(next_run_time, 4), 2) + ':' + RIGHT(next_run_time, 2) AS CHAR(8))
           WHEN LEN(next_run_time) = 5 THEN CAST('0' + LEFT(RIGHT(next_run_time, 5), 1) + ':' + LEFT(RIGHT(next_run_time, 4), 2) + ':' + RIGHT(next_run_time, 2) AS CHAR(8))
           WHEN LEN(next_run_time) = 6 THEN CAST(LEFT(RIGHT(next_run_time, 6), 2) + ':' + LEFT(RIGHT(next_run_time, 4), 2) + ':' + RIGHT(next_run_time, 2) AS CHAR(8))
           ELSE 'NA'
       END AS 'Prochaine heure d'exécution',
       Subscriptions.Parameters AS Paramètres,
       ISNULL(CONVERT(XML, [ExtensionSettings]).value('(//ParameterValue/Value[../Name="TO"])[1]', 'nvarchar(50)'), CONVERT(XML, [ExtensionSettings]).value('(//ParameterValue/Value[../Name="PATH"])[1]', 'nvarchar(150)')) AS [À],
       ISNULL(CONVERT(XML, [ExtensionSettings]).value('(//ParameterValue/Value[../Name="RenderFormat"])[1]', 'nvarchar(150)'), CONVERT(XML, [ExtensionSettings]).value('(//ParameterValue/Value[../Name="RENDER_FORMAT"])[1]', 'nvarchar(150)')) AS [Format de rendu],
       CONVERT(XML, [ExtensionSettings]).value('(//ParameterValue/Value[../Name="Subject"])[1]', 'nvarchar(150)') AS [Sujet]
FROM [dbo].[ReportSchedule]
INNER JOIN [dbo].[Schedule] ON ReportSchedule.ScheduleID = Schedule.ScheduleID
INNER JOIN [dbo].[Catalog] ON ReportSchedule.ReportID = Catalog.ItemID
INNER JOIN [dbo].[Subscriptions] ON ReportSchedule.SubscriptionID = Subscriptions.SubscriptionID
INNER JOIN [dbo].[Users] ON Subscriptions.OwnerID = Users.UserID
INNER JOIN msdb.dbo.sysjobs J ON CONVERT(nvarchar(128), [ReportSchedule].ScheduleID) = J.name
INNER JOIN msdb.dbo.sysjobschedules JS ON J.job_id = JS.job_id

Cette requête récupère des informations telles que le nom du rapport, la description de l’abonnement, le dernier statut, l’heure de la dernière exécution, la prochaine date d’exécution, l’heure de la prochaine exécution, les paramètres, le(s) destinataire(s), le format de rendu et le sujet. La colonne “UrlGestionAbonnementRapport” fournit un lien direct vers la page Gestionnaire de rapports pour chaque abonnement, permettant un accès facile pour une gestion ultérieure.

Échecs des abonnements aux rapports

Le deuxième rapport d’utilité que nous explorerons est le rapport des échecs des abonnements aux rapports. Ce rapport permet d’identifier les abonnements qui ont échoué récemment, ce qui permet de traiter rapidement les erreurs courantes liées aux e-mails ou aux autorisations. Le rapport inclut les abonnements qui ont échoué au cours des 30 derniers jours.

Voici un exemple de requête qui peut être utilisée pour générer le rapport des échecs des abonnements aux rapports:

SELECT Catalog.Name AS NomRapport,
       'http://votreserveur/Reports/Pages/Report.aspx?ItemPath=' + Catalog.Path + '&SelectedTabId=PropertiesTab&SelectedSubTabId=SubscriptionsTab' AS UrlGestionAbonnementRapport,
       Users.UserName AS PropriétaireAbonnement,
       Subscriptions.Description AS DescriptionAbonnement,
       Subscriptions.LastStatus AS DernierStatut,
       Subscriptions.LastRunTime AS DernièreExécution
FROM [dbo].[ReportSchedule]
INNER JOIN [dbo].[Schedule] ON ReportSchedule.ScheduleID = Schedule.ScheduleID
INNER JOIN [dbo].[Catalog] ON ReportSchedule.ReportID = Catalog.ItemID
INNER JOIN [dbo].[Subscriptions] ON ReportSchedule.SubscriptionID = Subscriptions.SubscriptionID
INNER JOIN [dbo].[Users] ON Subscriptions.OwnerID = Users.UserID
WHERE ((Subscriptions.DataSettings IS NULL AND Subscriptions.LastStatus LIKE 'Failure%')
       OR (Subscriptions.DataSettings IS NOT NULL AND RIGHT(Subscriptions.LastStatus, 11) <> '; 0 errors.'))
      AND Subscriptions.LastRunTime > DATEADD(day, -31, GETDATE())

Cette requête récupère des informations telles que le nom du rapport, le propriétaire de l’abonnement, la description de l’abonnement, le dernier statut et l’heure de la dernière exécution des abonnements qui ont échoué récemment. La colonne “UrlGestionAbonnementRapport” fournit un lien direct vers la page Gestionnaire de rapports pour chaque abonnement, permettant un accès facile pour une investigation et un dépannage ultérieurs.

En utilisant ces rapports d’utilité, vous pouvez fournir des informations précieuses sur vos abonnements aux services de rapports SQL Server, garantissant une gestion efficace et un dépannage de tout problème qui pourrait survenir.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.