[SSRS – SSMS – Sharepoint] S’envoyer un mail pour obtenir les résultats d’un abonnement
Avec Sharepoint et SSRS, on peut facilement créer un rapport que l’on enverra automatiquement par mail ou que l’on enregistrera dans un dossier. C’est sympa mais encore faut-il être sûr que la génération de ses rapports se déroule bien. Je vais donc vous donner trois possibilités pour surveiller cette génération des documents via un abonnement.
Le but va être d’aller chercher le statut de la dernière exécution d’un abonnement. Par exemple : ‘Done: 4 processed of 4 total; 4 errors.’
Solution 1 : Manuellement via Sharepoint
Pour cela, nous allons ouvrir les souscriptions d’un rapport. Technique longue et fastidieuse si nous devons le faire pour tous les rapports et tous les abonnements.
Dans Sharepoint :
- Ouvrez le menu lié à votre rapport (les 3 points à côté du rapport)
- Cliquez sur les 3 points dans la fenêtre qui s’ouvre (à côté de follow).
- Cliquez sur ‘Manage Subscriptions’.
- Vous trouverez les informations sur la dernière génération dans la dernière colonne ‘Last Results’
Solution 2 : Manuellement via SQL Server Management Studio
Plus rapide et plus pratique que la version manuelle via Sharepoint. Mais il n’en reste pas moins que vous devez le faire tous les jours.
- Avec SSMS connectez-vous au serveur qui héberge votre base de données Sharepoint.
- Recherchez la base de reporting service (Elle doit se nommer ReportingService_ suivi d’une liste de caractères illisibles).
- Et exécutez la requête suivante :
SELECT [ModifiedDate] ,[Description] ,[LastStatus] ,[LastRunTime] FROM [ReportingService_XXXXXXX].[dbo].[Subscriptions] WHERE Description = ‘<Description de votre report>’ ORDER BY [LastRunTime] DESC
- Vous pouvez aussi exécuter la requête suivante si vous souhaitez obtenir les résultats des abonnements de toutes vos requêtes.
Au passage, vous verrez que vous aurez de nombreuses informations sur votre abonnement :- le nom du rapport : ReportName
- le chemin d’accès de votre rapport :ReportPath
- le statut : [LastStatus]
- la dernière exécution : LastRunTime
- le type d’abonnement : DeleveryType
SELECT R.ScheduleID AS JobName ,C.NAME AS ReportName ,C.[Path] AS ReportPath ,S.SubscriptionID ,SUBSTRING(S.DeliveryExtension , 14 , len(S.DeliveryExtension)) AS DeleveryType ,S.[Description] AS Subscription_Desc ,S.LastStatus AS Subscription_Exec_Status ,C.CreationDate ,C.ModifiedDate ,S.LastRunTime ,[LastStatus] FROM dbo.[Catalog] C INNER JOIN dbo.Subscriptions S ON S.Report_OID = C.ItemID INNER JOIN dbo.ReportSchedule R ON R.SubscriptionID = S.SubscriptionID -- WHERE C.Name like 'GenerationPDF'
Solution 3 : Via Sharepoint et un abonnement.
Ben oui, pourquoi se priver de Sharepoint alors que nous l’utilisons justement pour gérer toute sorte d’abonnement.
Donc créez un nouveau rapport SSRS qui va chercher les données de statut de dernière exécution de l’abonnement :
SELECT [ModifiedDate] ,[Description] ,[LastStatus] ,[LastRunTime] FROM [ReportingService_XXXXXXX].[dbo].[Subscriptions] WHERE Description = ‘<Description de votre report>’ ORDER BY [LastRunTime] DESC |
Puis déposez le sur votre Sharepoint et créez un abonnement de type Email sur celui-ci.
Solution 4 : Autres solutions
Il existe bien sûr plein d’autres possibilités d’envoyer un suivi de l’abonnement.
Par exemple, Via SSMS en créant un Job qui envoie un mail.
Si vous avez des solutions plus intéressantes n’hésitez pas à en parler dans les commentaires ci-dessous ou à donner des urls qui en proposent.
Pour aller plus loin et sur le même sujet je vous propose de lire aussi:
[SP2010] Message d’erreur ‘MOSS MA NOT FOUND’
2 commentaires sur « [SSRS – SSMS – Sharepoint] S’envoyer un mail pour obtenir les résultats d’un abonnement »