1

在 SSRS 报告服务中有创建、更新和删除订阅、获取订阅属性的方法,但我没有找到告诉订阅上次运行时间和下次发送时间的方法?

4

2 回答 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 回答