简体   繁体   中英

SSRS: Report subscription ran on off-cycle schedule

SQL Server 2014

I have a shared schedule for quarterly reporting that is set to go out on the 1st day of Jan, April, July, and Oct. However, the report went out on August 1st. I checked the report server and confirmed that the schedule is not set to run for August but the actual schedule table shows that the report did run for August 1st. In the SQL Agent job history, there is only one run, which is for August 1st and it was executed by the service account. The subscription says the next run date is Oct 1st.

So, I am at a loss to understand why the report ran off schedule. The system appears to confirm that the report is scheduled correctly but the system seems to have ran it off schedule. Are there any other troubleshooting steps that I can follow for this?

Update (screenshot):

在此处输入图片说明

After our discussion in the comments, I guess that someone had the idea to rename the original job for the subscription to a human-readable name and didn't tell you before he left the company. To find that job, you can of course go through the list of jobs of SQL Server Agent and see if you can find a job with a name that has something to do with your report/subscription. If this isn't enough, open the Job Activity Monitor in SSMS (under SQL Server Agent) and look for a job that was last executed on August 1st at the time the emails went out. If this isn't successful and there are too many jobs to go through manually, I suggest to do the following:

  • Find the ItemID of your report in the Catalog table of the ReportServer database (use Path and Name to identify your report).
  • Find the SubscriptionID of your subscription in the Subscriptions table of the ReportServer database, filtering the Report_OID column using the ItemID of the report.

Then, find this <SubscriptionID> in the steps of jobs for SQL Server Agent using a query like this in the msdb database:

SELECT j.[name] AS job_name, s.step_name
FROM dbo.sysjobs j
  INNER JOIN dbo.sysjobsteps s ON j.job_id = s.job_id
WHERE s.command like '%<SubscriptionID>%'

(Replace <SubscriptionID> by the SubscriptionID of your subscription).

I guess that you will find (at least) 2 jobs with this query, one with your quarterly schedule and one that is scheduled to run on August 1st, both with a jobstep command like EXEC dbo.AddEvent @EventType='TimedSubscription', @EventData='<SubscriptionID>' executed in the ReportServer database (with your <SubscriptionID> ). Do whatever is appropriate with that second job.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM