SSRS Как получить журнал выполнения для подписки? - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно получить журнал выполнения для подписки.

Мне нужно узнать, сколько раз была вызвана подписка и сколько времени потребовалось для ее выполнения, от ожидающего до успешного или неудачного состояния.

Я пытался получить информацию из msdb.dbo из всех таблиц заданий, но во время выполнения там что-то другое.

Любая помощь будет более чем оценена.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

SSRS ReportServer помогает нам найти подробную информацию о выполнении отчетов и другие подробности. Таким образом, мы можем использовать следующий запрос, чтобы узнать ответы на следующие вопросы:

- Сколько раз была вызвана подписка?

- Сколько времени потребовалось для запуска?

SELECT TMP_TBL.*,sc.LastStatus,sc.LastRunTime FROM (
select  ROW_NUMBER() OVER(ORDER BY TimeEnd DESC) AS Rw_Nr,CASE(RequestType) 
        WHEN 0 THEN 'Interactive'
        WHEN 1 THEN 'Subscription'
        WHEN 2 THEN 'Refresh Cache'
        ELSE 'Unknown'
        END AS RequestType ,DATEDIFF(second,TimeStart,TimeEnd) AS Execution_Time ,Status ,UserName ,Format ,c.ItemID
FROM ExecutionLogStorage EL WITH(NOLOCK)
LEFT  JOIN Catalog C WITH(NOLOCK) ON (EL.ReportID = C.ItemID)
where RequestType=1
-- AND el.TimeEnd BETWEEN @BegTime AND @EndTime
) AS TMP_TBL LEFT JOIN Subscriptions sc ON sc.Report_OID = TMP_TBL.ItemID and TMP_TBL.Rw_Nr=1
0 голосов
/ 06 ноября 2019

Вот начало .. оно не дает вам все, что вы хотите ... но, безусловно, достаточно, чтобы начать

SELECT
sj.[name] AS [Job Name],
rs.SubscriptionID,
c.[Name] AS [Report Name],
c.[Path],
su.Description,
su.EventType,
su.LastStatus,
su.LastRunTime


FROM msdb..sysjobs AS sj 

INNER JOIN ReportServer..ReportSchedule AS rs
ON sj.[name] = CAST(rs.ScheduleID AS NVARCHAR(128)) 

INNER JOIN ReportServer..Subscriptions AS su
ON rs.SubscriptionID = su.SubscriptionID

INNER JOIN ReportServer..[Catalog] c
ON su.Report_OID = c.ItemID
...