2017-07-07 3 views
0

Je suis un nouveau venu dans SSRS et j'essaie de trouver un moyen de savoir quand le rapport planifié a réellement démarré sur le serveur, quand il a été terminé avec succès et s'il a été annulé. Pour l'instant, j'utilise l'API de classe ReportingService2010 pour parler au Report Server et la seule façon qui me semble possible est de créer quelque chose de personnalisé qui vérifie les horaires et déclenche des événements à ces moments pour les événements commencés et pour analyser le dossier où je vais enregistrer le rapport et quand un nouveau fichier est ajouté, je sais que le rapport a été créé avec succès, et peut-être ajouter un événement Timeout après x temps. Je ne pense pas que ce soit une approche vraiment propre et je suis sûr que vous pourriez avoir une réponse plus facile parce que je suis sûr qu'il doit y avoir un moyen de le faire sans tout scanner manuellement. J'ai utilisé la méthode ListJobs() pour accéder à tous les travaux en cours d'exécution sur le serveur, mais elle ne semble pas prendre en compte la fin d'un abonnement, car les résultats ne s'affichent que dans la méthode ListJobs() lorsque Je clique manuellement sur "Exécuter maintenant" pour un rapport spécifique sur le serveur.SSRS Calendrier d'abonnement Événements commencés/terminés

Avez-vous une idée?

Merci beaucoup,

Claude

+0

Vous pouvez interroger la table 'Subscriptions' dans la base de données' ReportServer'. –

Répondre

1

Il y a quelques tables dans la base de données 'ReportServer' pour vous fournir la plupart de vos informations. Par exemple, la table des abonnements a la colonne LastStatus, elle indique le nombre d'abonnements traités et le dernier état des rapports. Par exemple: «Terminé: 2 traités de 2 au total; 0 erreurs ',' En attente ',

Exemple de requête serait comme ci-dessous, ceci est pour obtenir un calendrier, mais vous pouvez vérifier et modifier comme vous le souhaitez.

Configurez un nouveau rapport avec cette requête et planifiez-le selon votre besoin pour vous donner le statut.

SELECT CAT.Name 
    ,CAT.[Path] AS ReportPath 
    ,SUB.LastRunTime 
    ,SCH.NextRunTime 
    ,CONVERT(VARCHAR(10), CONVERT(datetime, SCH.NextRunTime, 1), 101) As RunDate 
    ,right(convert(varchar(32),SCH.NextRunTime,100),8) As RunTime 
    ,SUB.[Description] 
    ,SUB.EventType 
    ,SUB.LastStatus 
    ,SUB.ModifiedDate 
    ,SCH.Name AS ScheduleName  
FROM reportserver.dbo.Subscriptions AS SUB 
INNER JOIN reportserver.dbo.Users AS USR 
    ON SUB.OwnerID = USR.UserID 
INNER JOIN reportserver.dbo.[Catalog] AS CAT 
    ON SUB.Report_OID = CAT.ItemID 
INNER JOIN reportserver.dbo.ReportSchedule AS RS 
    ON SUB.Report_OID = RS.ReportID 
     AND SUB.SubscriptionID = RS.SubscriptionID 
INNER JOIN reportserver.dbo.Schedule AS SCH 
    ON RS.ScheduleID = SCH.ScheduleID 
--Where CONVERT(VARCHAR(10), CONVERT(datetime, SCH.NextRunTime, 1), 101) 
= CONVERT(VARCHAR(10), CONVERT(datetime, getDate()+1, 1), 101) 
ORDER BY USR.UserName 
    ,CAT.[Path];