所以我的问题是,什么运行 SSRS 中的订阅报告?我的意思是当我订阅报告并给它一个期望的运行时间并将文件发送给我时。这对吗?所以我想知道是什么运行它?它是 SQL 函数中的过程吗?好吧,我想知道这一点的原因是我想在每次计划报告开始之前运行 SQL 更新。
我可以创建在预定时间之前进行我想要的更新的程序,但是将它集成到工作本身中仍然会更实用
所以我的问题是,什么运行 SSRS 中的订阅报告?我的意思是当我订阅报告并给它一个期望的运行时间并将文件发送给我时。这对吗?所以我想知道是什么运行它?它是 SQL 函数中的过程吗?好吧,我想知道这一点的原因是我想在每次计划报告开始之前运行 SQL 更新。
我可以创建在预定时间之前进行我想要的更新的程序,但是将它集成到工作本身中仍然会更实用
简短的回答是,这些订阅通过SQL Server Agent作为数据库作业运行。
它们是使用 GUID 类型名称创建的:
一个作业步骤将具有如下命令:
exec [ReportServer].dbo.AddEvent @EventType='SharedSchedule', @EventData='8df4ff30-97d3-41f7-b3ef-9ce48bfdfbfa'
您可以通过ReportServer数据库使用Subscriptions
表及其MatchData
列(与作业 GUID 匹配)和Catalog
包含报告数据的表(即通过Subscriptions.Report_OID
列链接)将这些作业/GUID 追溯到订阅和报告。
您可以使用此信息来检查已安排的内容,并根据此安排适当地进行更新。
我自己没有尝试过,但一种选择甚至是挂钩到现有的数据库作业,但我会谨慎处理;我看不到任何问题,但最好不要更新任何此类系统创建的作业。