订阅和交付 (Reporting Services)

Reporting Services 订阅是一种配置,它在特定时间或为响应某个事件,以指定的文件格式传递报表。 例如,每周三将 MonthlySales.rdl 报表作为 Microsoft Word 文档保存至文件共享。 订阅可以用于对报表的传递(以特定报表参数值集)进行计划并使其自动完成。

可以为单个报表创建多个订阅,以改变订阅选项;例如,可以指定不同的参数值来生成报表的三个版本,例如西部区域销售报表、东部区域销售额和所有销售额。

示例 ssrs 订阅流

订阅在 SQL Server 的每个版本中都不可用。 有关 SQL Server 各版本支持的功能列表,请参阅 SQL Server 2014 各版本支持的功能

注释

从 SQL Server 2008 R2Reporting Services 开始,你可以以编程方式转让订阅的所有权。 没有可用于转让订阅所有权的用户界面。 有关详细信息,请参阅 ChangeSubscriptionOwner使用 PowerShell 更改与列出 Reporting Services 订阅所有者,并运行订阅

本主题内容:

本节中的主题:

订阅和交付方案

对于每个订阅,您可以配置交付选项,而可用选项取决于您选择的交付扩展。 传递扩展插件是支持某种分发方式的模块。 Reporting Services 包括多个传递扩展组件,也可以通过第三方供应商获得。

如果你是开发人员,则可以创建自定义传递扩展插件以支持其他方案。 有关详细信息,请参阅 实现传递扩展插件

下表对常见的 Reporting Services 订阅方案进行了说明。

情景 DESCRIPTION
以电子邮件形式发送报表 以电子邮件形式将报表发送给单个用户和组。 创建订阅,并指定组别名或电子邮件别名以便接收您要分发的报表。 您可以让 Reporting Services 在运行时确定订阅。 如果您想要将相同的报表发送给其成员会发生变化的组,则可以使用查询在运行时派生订阅列表。
脱机查看报表 您要存档的报表可以直接发送到您计划在每天夜里备份到的共享文件夹。 要用很长时间在浏览器中加载的大型报表可通过能够在桌面应用程序中查看的格式发送到共享文件夹。 用户可以为订阅输出选择以下格式之一:

包含报表数据的 XML 文件

CSV (逗号分隔)

PDF格式

MHTML (Web 存档)

Microsoft Excel

TIFF 文件

Microsoft Word
预加载缓存 如果有多个参数化报表实例或查看报表的大量报表用户,则可以在缓存中预加载报表,以减少显示报表所需的处理时间。
数据驱动的报表 使用数据驱动的订阅可以在运行时自定义报表输出、传递选项和报表参数设置。 订阅使用查询在运行时从数据源获取输入值。 您可以使用数据驱动订阅执行邮件合并操作,将报表发送到在处理订阅时确定的一组订户。

标准和 Data-Driven 订阅计划

Reporting Services 支持两种类型的订阅: 标准订阅数据驱动订阅。 标准订阅由单个用户创建和管理。 标准订阅由在订阅处理期间无法变化的静态值组成。 对于每个标准订阅,只有一组报表呈现选项、传递选项和报表参数。

数据驱动订阅通过查询外部数据源(提供用于指定收件人、报表参数或应用程序格式的值)来获取运行时订阅信息。 如果你有非常大的收件人列表,或者想要改变每个收件人的报表输出,则可以使用数据驱动订阅。 若要使用数据驱动订阅,必须具备生成查询的专业知识并了解如何使用参数。 通常,由报表服务器管理员创建和管理这些订阅。 有关详细信息,请参阅以下内容:

订阅要求

在对报表创建订阅之前,必须满足以下前提条件:

要求 DESCRIPTION
权限 您必须对报表具有访问权限。 在订阅报表之前,您必须具有查看该报表的权限。

角色分配必须包括“管理单个订阅”任务。
已存储凭据 若要创建订阅,报表必须使用已存储的凭据或不使用任何凭据在运行时检索数据。 您无法订阅到被配置为使用当前用户模拟或委托凭据连接到外部数据源的报表。 已存储的凭据可以是 Windows 帐户或数据库用户帐户。 有关详细信息,请参阅 指定报表数据源的凭据和连接信息

您必须拥有查看报表和创建单个订阅的权限。 必须对报表服务器启用 “预定的事件和报表传递” 。 有关详细信息,请参阅 为本机模式报表服务器创建和管理订阅
报表中的用户依赖值 仅在标准订阅情况下,如果报表在筛选器中使用用户帐户信息或将此信息以文本形式显示在报表上,则可以对这些报表创建订阅。 在报表中,用户帐户名称是通过 User!UserID 解析为当前用户的表达式来指定的。 创建订阅时,将把创建订阅的用户视为当前用户。
无模型项安全性 如果模型包含模型项安全设置,则无法订阅使用模型作为数据源的报表生成器报表。 此限制仅适用于使用模型项安全性的报表。
参数值 如果报表使用参数,则必须由报表自己或在所定义的订阅中指定参数值。 如果报表中定义了默认值,则可以将参数值设置为使用默认值。

交付扩展

订阅将在报表服务器上进行处理,并且通过该服务器上部署的传递扩展插件分发。 默认情况下,可以创建将报表发送到共享文件夹或电子邮件地址的订阅。 如果将报表服务器配置为 SharePoint 集成模式,则还可以将报表发送到 SharePoint 库。

当用户创建订阅时,他或她可以选择一个可用的传递扩展插件来确定报表的传递方式。 Reporting Services 包括以下传递扩展插件。

传递扩展插件 DESCRIPTION
Windows 文件共享 将报表作为静态的应用程序文件传递到可通过网络访问的共享文件夹。
电子邮件 将通知或报表作为电子邮件附件或 URL 链接进行传递。
SharePoint 库 将报表作为静态的应用程序文件传递到可通过 SharePoint 站点访问的 SharePoint 库。 必须将该站点与在 SharePoint 集成模式下运行的报表服务器集成。
null 传递提供程序是一个高度专用的传递扩展插件,用于预加载具有随时查看参数化报表的缓存。此方法不适用于单个订阅中的用户。 数据驱动订阅中的管理员可使用 Null 传递通过预加载缓存来提高报表服务器的性能。

注释

报表传递是 Reporting Services 体系结构的可扩展部分。 第三方供应商可以创建自定义的传递扩展插件,将报表传送到不同的位置或设备。 有关自定义传递扩展插件的详细信息,请参阅 “实现传递扩展插件”。

订阅的各个部分

订阅定义由以下几部分组成:

  • 指向可在无人参与模式下运行的报表(即,使用存储凭据或不使用任何凭据的报表)的指针。

  • 传递方法(如电子邮件)和传递模式的设置(如电子邮件地址)。

  • 用于以特定格式显示报表的呈现扩展插件。

  • 处理订阅的条件,表现形式为事件。

    通常,运行报表的条件是基于时间的。 例如,你可能希望在周二下午 3:00 UTC 运行一个特定报告。 但是,如果该报表作为快照运行,则您可以指定订阅在快照刷新时运行。

  • 运行报表时使用的参数。

    这些参数是可选的,并且仅为接受参数值的报表指定参数。 由于订阅通常由用户拥有,因此所指定的参数值因订阅而异。 例如,不同部门的销售经理将使用返回其部门数据的参数。 所有参数都必须具有明确定义的值或有效的默认值。

订阅信息与各个报表一起存储在报表服务器数据库中。 无法脱离与其关联的报告单独管理订阅。 请注意,无法扩展订阅以包含说明、其他自定义文本或其他元素。 订阅只能包含上面列出的各项。

如何处理订阅

Reporting Services 中包含计划和传递处理器,该处理器提供计划报表和向用户传递报表的功能。 报表服务器持续对它所监视的事件作出响应。 当发生与为某个订阅定义的条件相符的事件后,报表服务器将读取该订阅,以确定如何处理和传递报表。 报表服务器还将请求在订阅中指定的传递扩展插件。 在运行该传递扩展插件后,报表服务器将从订阅提取传递信息,再将这些信息传递给该传递扩展插件进行处理。

该传递扩展插件将以在该订阅中定义的格式呈现报表,再将报表或通知传递到指定的目标。 如果无法传递报表,则会将条目记录到报表服务器日志文件中。 如果要支持重试作,可以将报表服务器配置为在第一次尝试失败时重新尝试传递。

处理标准订阅

标准订阅可以生成报表的一个实例。 报表将传递到一个共享文件夹或在订阅中指定的电子邮件地址。 报表布局和数据不会有所不同。 如果报表使用参数,在处理标准订阅时报表中的每个参数都将使用单一的值。

处理 Data-Driven 订阅

数据驱动订阅可以生成可传递到多个目标的许多报表实例。 报表布局不会有所不同,但如果从订阅服务器结果集传入参数值,报表中的数据可能会有所不同。 在值从行集传入时,影响报表呈现方式,以及决定报表是作为附件还是链接到电子邮件的传递选项,可能会因订阅者不同而有所变化。

数据驱动订阅可以生成大量的传递。 报表服务器会为从订阅查询返回的行集中的每一行创建一个传递。

报告交付特征

通过标准订阅传递的报表通常呈现为静态报表。 这些报表要么基于最新的报表执行快照,要么生成静态报表以完成发送。 如果在订阅中选择按需运行的报表中的 “包含链接” 选项,则单击超链接时,报表服务器将运行报表。

注释

通过 URL 传递的报表将与报表服务器保持连接,并且可以在两次查看之间进行更新或删除。 您为订阅选择的传递选项决定了是将报表以 URL 形式进行传递,还是将其嵌入到电子邮件正文中进行传递,或是作为附件发送。

通过数据驱动订阅传送的报表可能在处理订阅期间被重新生成。 报表服务器不会锁定报表的特定实例或其数据集以完成数据驱动订阅。 如果订阅针对不同的订阅者使用不同的参数值,则报表服务器将重新生成报表,以得到所需的结果。 如果在创建和传递第一个报表副本后更新基础数据,则稍后获取报表的用户可能会看到基于不同结果集的数据。 您可使用以快照形式运行的报表,以确保向所有订阅者发送同一个报表实例。 然而,如果在订阅处理过程中进行预定的快照更新,用户在报告中仍可能获取不同的数据。

触发订阅处理

报表服务器使用两种事件来触发订阅处理:一种是在计划中指定的时间驱动事件,另一种是快照更新事件。

时间驱动的触发器使用报表特定的计划或共享计划来指定订阅何时运行。 对于按需运行的报表和缓存报表而言,计划是唯一的触发选项。

快照更新事件使用报表快照的计划更新来触发订阅。 可以根据报表上设置的报表执行属性定义每当报表使用新数据更新时触发的订阅。

另请参阅

创建 Data-Driven 订阅(SSRS 教程)计划Reporting Services 报表服务器(本机模式)创建和管理本机模式报表服务器的订阅监视 Reporting Services 订阅