我们正在使用SQLServer 2008R2,并希望从Windowsbatch file运行和SSRS报告。 我们使用第三方调度程序加载数据仓库表,最后我们使用SSRS来运行数据质量报告。 我可以创build报告订阅以通过电子邮件发送报告,但是如何与报告服务器通信该作业已完成,是时候运行报告了? OUr调度程序应用程序可以运行batch file,所以如果我可以通过一个batch file,这将是伟大的…
当然,但有点笨重。 在创build报表订阅时,Reporting Services将在SQL Server代理中创build一个作业。 不幸的是,这项工作将有一个完全无益的名字 – 一个随机的GUID。 在报表服务器目录数据库中使用以下查询来列出随每个报表计划(ScheduleID列)一起提交的作业名称。 一旦找出哪个作业调用了订阅,就可以在batch file中使用sqlcmd来运行SQL Server代理作业(msdb..sp_start_job),或者查看作业中的步骤并直接执行它们。 我会select亲自执行这个工作,以便仍然有执行历史logging。
SELECT sub.Description, CASE WHEN sub.ExtensionSettings LIKE '%<Name>TO</Name><Field>%' THEN '(Data Driven)' ELSE SUBSTRING(CAST(sub.ExtensionSettings AS varchar(8000)), 56, ISNULL(NULLIF(CHARINDEX('</ParameterValue>', CAST(sub.ExtensionSettings AS varchar(8000))) - 8 - 55 - 1, -63), 1)) END AS SendTo, cat.Name, sch.LastRunTime, sub.LastStatus, sch.ScheduleID, u.UserName AS CreatedBy FROM Subscriptions sub INNER JOIN Catalog cat ON sub.Report_OID = cat.ItemID INNER JOIN ReportSchedule rs ON sub.SubscriptionID = rs.SubscriptionID INNER JOIN Schedule sch ON rs.ScheduleID = sch.ScheduleID LEFT OUTER JOIN Users u ON sch.CreatedById = u.UserID ORDER BY cat.Name
使用带有使用SetScheduleProperties方法的简短“rss”脚本的RS.exe实用程序 ,您可以立即改变“Once”types的共享日程安排。
不幸的是,似乎没有直接触发计划的API方法。