使用外部数据源提供订阅服务器数据(数据驱动订阅)

在数据驱动订阅中,动态订阅数据是由从外部数据源检索数据的查询或命令提供的。 可以从满足数据驱动订阅处理要求的任何支持数据源中检索订阅数据。 查询或命令语法必须对随报表服务器安装的数据处理扩展插件有效。

数据处理要求

Reporting Services 使用数据处理扩展插件检索订阅数据。 建议的数据源类型包括:

  • SQL Server 关系数据库

  • Oracle 数据库

  • Analysis Services 多维和数据挖掘数据源

  • XML 数据源

    使用 XML 数据处理扩展插件处理订阅服务器数据时,请确保在订阅中增加查询超时设置。 XML 数据处理扩展插件使用毫秒(而不是秒)来表示查询超时值。 如果你没有增加超时值,则订阅可能会因处理时间不足而失败。

    配置与订阅服务器数据源的连接时,尽量不要使用“不需要凭据”选项。 在运行时使用 XML 数据处理扩展插件检索订阅数据时,建议使用存储的凭据。

您可能可以使用其他支持的数据源类型,但并不能保证所有的数据源类型都能正常发挥作用。 例如,以下数据源类型不能用于订阅服务器数据:

  • SAP Netweaver BI 数据源

  • 报表模型

如果你有要在数据驱动订阅中使用的自定义数据处理扩展插件,则它必须实现 IDbCommandIDataReader 接口。 数据处理扩展插件必须支持仅限架构的查询执行。 此查询用于在设计时检索列元数据,以使用户可以将列映射到订阅定义中的传递选项和报表参数。 仅限架构的查询执行发生在用户定义订阅的初期阶段。

查询要求

创建用于检索订阅数据的查询时,请牢记以下要点:

  • 只能为订阅创建一个查询。

  • 查询必须返回所有要用于传递选项和用于指定报表参数的值。

  • 报表服务器会为结果集中的每一行都创建一个报表传递。 如果结果集包含 300 多行,则报表服务器会尝试传递 300 个报表。

使用订阅服务器数据库中的变量数据设置传递选项

可以使用订阅服务器数据库中的数据为每个接收者自定义传递选项。 你所使用的传递扩展插件的类型将确定哪些选项是可用的。 如果正在使用报表服务器电子邮件传递扩展插件,则该查询应包含每个订阅方的电子邮件别名。 如果正在使用文件共享传递,则订阅方数据应包含可用于创建订阅方特定的报表文件或提供传递目标的值。 有关详细信息,请参阅 Reporting Services 中的电子邮件传递

将参数值从订阅服务器数据库传递到报表

如果要为参数化报表创建数据驱动订阅,则可以使用变量参数值来自定义每个报表的输出。 例如,订阅服务器数据库可能包含雇员标识号、雇用日期、职务和办公地点信息,这些信息可用来筛选报表数据。 如果报表接受基于这些数据或其他可用列数据的参数,则可以将参数映射到相应的列。

将订阅方字段映射到报表参数时,请确保数据类型和列长度相符。 如果数据类型不匹配,则在订阅处理过程中会出现错误。 若要详细了解如何使用参数化报表中订阅方数据,请参阅创建数据驱动订阅(SSRS 教程)

修改订阅方数据源

对订阅方数据源进行以下修改将会阻止订阅运行:

  • 删除订阅中引用的列。

  • 修改数据源的表结构。

  • 更改数据类型和其他列属性。

如果执行了上述任何更改,则必须更新订阅。