在 SSRS 报告服务中有创建、更新和删除订阅、获取订阅属性的方法,但我没有找到告诉订阅上次运行时间和下次发送时间的方法?
问问题
1648 次
2 回答
1
秘诀是下一次运行时间存储在 MSDB 作业中。
SELECT
c.Name AS ReportName
, rs.ScheduleID AS JOB_NAME
, s.[Description]
, s.LastStatus
, s.LastRunTime
,NextScheduledRun = CONVERT(DATETIME,LEFT(CAST(SC.next_run_date AS VARCHAR(255)),4)+'-'+SUBSTRING(CAST(SC.next_run_date AS VARCHAR(255)),5,2)+'-'+RIGHT(CAST(SC.next_run_date AS VARCHAR(255)),2)+ ' '+
LEFT((RIGHT('0'+CAST(SC.next_run_time AS VARCHAR(6)),6)),2)+':'+SUBSTRING((RIGHT('0'+CAST(SC.next_run_time AS VARCHAR(6)),6)),3,2)+':'+RIGHT(SC.next_run_time,2))
,J.enabled
FROM
ReportServer..[Catalog] c
JOIN ReportServer..Subscriptions s ON c.ItemID = s.Report_OID
JOIN ReportServer..ReportSchedule rs ON c.ItemID = rs.ReportID
AND rs.SubscriptionID = s.SubscriptionID
JOIN msdb..sysjobs J
ON LTRIM(RTRIM(rs.ScheduleID)) = J.name
JOIN msdb..sysjobschedules AS SC
ON SC.job_id = J.job_id
于 2014-09-18T23:37:52.370 回答
0
我可以告诉你如何找到上次运行时间,而不是下次运行时间:
执行此操作的一种方法是对报表服务器数据库使用 SQL 查询。
在报表服务器中,您可以查询“订阅”表。那里有一列“上次运行时间”。
对 SQL Report Server 数据库运行下面的查询,看看我在说什么。
您可以使用“上次运行时间”列中的值。
/****** Script for SelectTopNRows command from SSMS ******/
SELECT [SubscriptionID]
,[OwnerID]
,[Report_OID]
,[Locale]
,[InactiveFlags]
,[ExtensionSettings]
,[ModifiedByID]
,[ModifiedDate]
,[Description]
,[LastStatus]
,[EventType]
,[MatchData]
,[LastRunTime]
,[Parameters]
,[DataSettings]
,[DeliveryExtension]
,[Version]
,[ReportZone]
FROM [ReportServer].[dbo].[Subscriptions]
于 2013-09-24T22:29:15.820 回答