计划和传递处理器

Reporting Services 包括一个计划和传递处理器组件,以支持计划操作,并驱动用于向电子邮件收件箱或共享文件夹等目标位置推送报表的传递扩展插件。

计划和传递处理器组件为内部组件,报表服务器使用它来处理订阅和报表传递、刷新快照或者为缓存的报表设置过期期限。如果要配置服务器功能或解决订阅或传递问题,则可以使用本主题中的信息来了解计划处理的阶段以及对其他服务和技术的依赖关系。本主题还介绍了可用于管理事件队列的配置设置。

计划和传递处理的工作方式

计划和传递处理器提供以下功能:

  • 维护报表服务器数据库中的事件和通知队列。对于扩展部署,将在部署中的所有报表服务器之间共享该队列。

  • 调用报表处理器以执行报表、处理订阅或清除缓存的报表。所有作为计划事件的结果发生的报表处理都将作为后台进程执行。

  • 调用在订阅中指定的传递扩展插件,以便可以传递报表。

计划和传递操作的其他方面由与计划和传递处理器配合工作的其他组件和服务进行处理。具体而言,计划和传递处理器在报表服务器服务中运行,并使用 SQL Server 代理作为计时器来生成预定的事件。下面分步说明了计划操作如何在 Reporting Services 部署中工作:

  1. 计划操作在用户创建计划时定义。计划定义的日期和时间用来触发报表传递的订阅,刷新快照或使缓存过期。

  2. 报表服务器将计划信息保存在报表服务器数据库中。

  3. 报表服务器在包含所提供计划信息的 SQL Server 代理中创建相应的作业。这些作业是使用打开的现有报表服务器数据库连接并通过存储过程创建的。

  4. SQL Server 代理按照计划中指定的日期和时间运行作业。作业创建的事件将添加到由 Reporting Services 维护的队列中。

  5. 该事件会导致报表或订阅进程发生。当在队列中检测到事件时对事件进行处理,并相应地处理或传递报表。

    在处理事件之前,计划和传递处理器会执行身份验证步骤以验证订阅的所有者有权查看该报表。有关订阅的详细信息,请参阅订阅处理

Reporting Services 维护一个针对所有计划操作的事件队列。它定期轮询队列,检查是否有新事件。默认情况下,每隔 10 秒扫描一次队列。通过修改 RSReportServer.config 文件中的 PollingInterval、IsNotificationService 和 IsEventService 配置设置可以更改此间隔。有关详细信息,请参阅RSReportServer 配置文件

服务器依赖关系

计划和传递处理器需要启动报表服务器服务和 SQL Server 代理。在基于策略的管理中,必须通过 Reporting Services 的外围应用配置器方面的 ScheduleEventsAndReportDeliveryEnabled 属性启用“计划和传递处理”功能。SQL Server 代理和报表服务器服务必须都在运行,才能执行计划的操作。

注意注意

可以使用 Reporting Services 的外围应用配置器方面临时或永久停止计划操作。虽然可以创建并部署自定义传递扩展插件,但是计划和传递处理器本身不是可扩展的。该工具管理事件和通知的方式是不可更改的。有关关闭功能的详细信息,请参阅如何打开或关闭 Reporting Services 功能

停止 SQL Server 代理的影响

默认情况下,计划的报表处理将使用 SQL Server 代理。如果停止该服务,除非通过 FireEvent 方法以编程的方式添加请求,否则将不会向队列中添加新的处理请求。重新启动该服务时,将继续进行创建报表处理请求的作业。对于过去在 SQL Server 代理脱机期间可能已经发生的报表处理作业,报表服务器不会尝试重新创建这些作业。如果 SQL Server 代理停止一个星期的时间,则该星期的所有计划操作都将丢失。

注意注意

对于 SQL Server 代理提供给 Reporting Services 的功能,可以使用通过 FireEvent 方法向队列中添加计划事件的自定义代码来替代。

停止报表服务器服务的影响

如果停止报表服务器服务,SQL Server 代理会继续向队列中添加报表处理请求。来自 SQL Server 代理的状态信息将指示作业成功。但是,由于报表服务器服务已停止,因此实际上不会发生报表处理。在您重新启动报表服务器服务之前,请求将在队列中一直累积。重新启动报表服务器服务后,将按顺序处理队列中的所有报表处理请求。