If you have ever encountered SQL Server Jobs which looks like a GUID value, you might have wondered what they are used for.
Our AX 2012 deployment is using a SQL Server Reporting Services instance, which is used for two purposes:
- AX 2012 SSRS reports
- Custom reporting from our Data warehouse
These jobs are actually periodically generated SSRS reports scheduled by our staff. Each job belongs to a different person and report.
By just having a look at the job itself does not reveal what is actually being executed, but the following T-SQL script can extract the details when you run it against the ReportServer database:
SELECT c.Name AS ReportName, S.ExtensionSettings, 'Next Run Date' = CASE next_run_date WHEN 0 THEN null ELSE substring(convert(varchar(15),next_run_date),1,4) + '/' + substring(convert(varchar(15),next_run_date),5,2) + '/' + substring(convert(varchar(15),next_run_date),7,2) END, 'Next Run Time' = isnull(CASE len(next_run_time) WHEN 3 THEN cast('00:0' + Left(right(next_run_time,3),1) +':' + right(next_run_time,2) as char (8)) WHEN 4 THEN cast('00:' + Left(right(next_run_time,4),2) +':' + right(next_run_time,2) as char (8)) WHEN 5 THEN cast('0' + Left(right(next_run_time,5),1) +':' + Left(right(next_run_time,4),2) +':' + right(next_run_time,2) as char (8)) WHEN 6 THEN cast(Left(right(next_run_time,6),2) +':' + Left(right(next_run_time,4),2) +':' + right(next_run_time,2) as char (8)) END,'NA'), Convert(XML,[ExtensionSettings]).value('(//ParameterValue/Value[../Name="TO"])[1]','nvarchar(100)') as [To] ,Convert(XML,[ExtensionSettings]).value('(//ParameterValue/Value[../Name="CC"])[1]','nvarchar(100)') as [CC] ,Convert(XML,[ExtensionSettings]).value('(//ParameterValue/Value[../Name="BCC"])[1]','nvarchar(100)') as [BCC] ,Convert(XML,[ExtensionSettings]).value('(//ParameterValue/Value[../Name="RenderFormat"])[1]','nvarchar(50)') as [Render Format] ,Convert(XML,[ExtensionSettings]).value('(//ParameterValue/Value[../Name="Subject"])[1]','nvarchar(50)') as [Subject] /*,Convert(XML,[Parameters]).value('(//ParameterValue/Value[../Name="StartDateMacro"])[1]','nvarchar(50)') as [Start Date] ,Convert(XML,[Parameters]).value('(//ParameterValue/Value[../Name="EndDateMacro"])[1]','nvarchar(50)') as [End Date] ,Convert(XML,[Parameters]).value('(//ParameterValue/Value[../Name="Currency"])[1]','nvarchar(50)') as [Currency]*/ ,[LastStatus] ,[EventType] ,[LastRunTime] ,[DeliveryExtension] ,[Version] FROM dbo.[Catalog] c INNER JOIN dbo.[Subscriptions] S ON c.ItemID = S.Report_OID INNER JOIN dbo.ReportSchedule R ON S.SubscriptionID = R.SubscriptionID INNER JOIN msdb.dbo.sysjobs J ON Convert(nvarchar(128),R.ScheduleID) = J.name INNER JOIN msdb.dbo.sysjobschedules JS ON J.job_id = JS.job_id
Now we have the details of:
- what reports were scheduled
- the report format
- execution status
- schedule and last successful run time.
This should give you a better overview about what are the SQL Server Jobs which looks like a GUID value in your database instance.
The code also works on the PowerBIReportServer database.