搜索 SSRS 订阅 - LightSwitch之星竞赛提交





5.00/5 (2投票s)
如何搜索 SSRS 订阅
问题是什么
SQL Server Reporting Services (SSRS) 订阅可以发送到电子邮件分发组或个人。分发组很受欢迎,因为您可以维护分发组来添加或删除接收报表的人员。然而,有时使用分发组并不实用。因此,如果接收报表的人员被替换,或者出于其他原因您想更改某个人的订阅,那么很难确定需要更改哪些报表订阅。这意味着您需要打开许多报表的订阅来确定是否需要更改它们。
背景
有关 SSRS 报表及其订阅的信息存储在 ReportServer
数据库中。Catalog
表存储报表的信息。Subscriptions
表存储订阅的信息。这两个表通过 Catalog
表中的报表 ID 相关联。这是 SQL Server 中定义的[外键关系]。
订阅信息作为 XML 字符串
存储在 Subscription
表的 ExtensionSettings
字段中。订阅的各个部分,例如收件人 (To)、抄送 (CC)、密送 (BCC) 和其他值,存储为 <parameter>
值。有关存储在 ExtensionSettings
字段中的完整设置的示例,请参见图 1。因此,如果我们想查找发送给个人的订阅,我们可以搜索该名称的 ExtensionSettings
字段。
解决方案
为了解决这个问题,我创建了一个 LightSwitch 应用程序来搜索 SSRS 订阅中的特定名称。该应用程序将有一个用于搜索订阅的屏幕,以及用于 Catalog
和 subscription
条目的详细信息屏幕。我还添加了从 LightSwitch 应用程序打开报表的功能,这样您就可以在 subscription
(s) 中进行更改。此解决方案使得查找和更改订阅变得更加容易。它消除了打开订阅但发现其中不包含您要更改的名称所浪费的时间。
应用程序
来自 ReportServer 数据库的数据源表
Catalog 表
我们在 Catalog
表中要显示的唯一字段是报表的 Path
(报表的完整分层路径)、名称和描述以及 Subscriptions
集合。我们还将需要通过与 Subscriptions
的关系创建的 Subscriptions
集合。我发现,如果一个字段被标记为可搜索,它就会包含在搜索结果中,即使它没有显示在搜索屏幕上。因此,您需要取消勾选所有其他字段的“Is Searchable”(可搜索)。这对于 LastStatus
字段尤其重要,因为它包含有关上次发送的订阅的信息,并且可能包含不属于当前订阅的人员姓名。正如您可能猜到的,我是在吃过亏后才知道这一点的,当时我遇到了错误的姓名匹配。有关您需要进行的设置,请参见图 2。
我还添加了两个计算字段来获取报表的 URL。第一个字段 ReportServerLink
基本上是报表服务器 URL 的常量值。我选择将其与下一个字段分开,以获得清晰度和易于更改。第二个字段是 LinkToReport
,它获取正在查看的报表的完整 URL。有关这两个计算字段的代码,请参见图 3。除了将 ReportServerLink
作为路径的前缀外,它还会将 /
和空格字符转换为报表 URL 中指定的格式。为了提供从 LightSwitch 应用程序打开此报表的功能,我使用了 Alessandro Del Sole 开发的自定义 Web 地址业务类型。在 VS Gallery 中搜索“Web Address Type for LightSwitch”即可获得此自定义业务类型。Gallery 中还有其他类似的业务类型。LinkToReport
字段必须指定为 **Web Address** 类型。
Subscriptions 表
在 Subscription
表中,我们想要显示和搜索的唯一字段是扩展设置以及通过与 catalog
表的关系创建的 Catalog 集合。查看 Catalog
和 Subscriptions
表,您会注意到两者之间的关系在设计器中显示。我还添加了一个计算字段,用于格式化设置。在每个 <ParameterValue>
字符串之前放置一个回车换行符(新行),以便每个参数显示在新行上,使其更易读。此格式化字段(称为 FormattedSettings
)是始终显示在屏幕上的字段。有关 FormattedSettings
字段的代码,请参见图 4。
屏幕截图
该应用程序有一个用于搜索订阅的屏幕,以及用于 Catalog
和 subscription
条目的详细信息屏幕。所有屏幕都是只读的,因此我已从所有命令栏中删除了编辑和保存按钮。我选择不允许更改订阅,因为我没有完全理解更改订阅后可能会发生什么。如果您胆子大,可以将其更改为允许编辑。
搜索订阅屏幕
这是一个标准的搜索屏幕 – 请参见图 5。显示的字段是格式化设置、Catalog 路径(作为链接)和 Subscription ID(作为链接)。由于格式化设置字段是多行的,我已将其高度设置为 5 行,如图所示。您可以输入电子邮件地址的一部分或全部,以查找包含该电子邮件地址的订阅。
订阅详细信息屏幕
这是一个标准的详细信息屏幕 – 请参见图 6。它显示格式化设置和 Catalog 路径(作为链接)。由于格式化设置字段是多行字段,我已将其高度设置为 25 行。此详细信息屏幕的主要目的是能够查看完整的设置。
Catalog 详细信息屏幕
这是一个标准的详细信息屏幕 – 请参见图 7。它显示 Path
、Name
和 Description
字段。它还显示计算出的 LinkToReport
字段,该字段是报表的完整 URL。此字段被设置为 WebAddress Viewer 业务类型,因此它充当活动超链接。单击它将在浏览器中打开报表,您可以在其中转到订阅(s) 并进行必要的更改。我还包含了一个此报表的订阅网格,方便查看报表是否有多个订阅。
摘要
正如您所看到的,LightSwitch 允许我构建一个应用程序,使我的工作更容易,节省了我的时间。我能够非常快地构建应用程序(不到半天),并且只需要进行非常有限的代码编写即可获取计算字段的值。实际上,最困难的部分是上面关于 SSRS 在何处以及如何存储报表和订阅信息的[研究]。在标准的 VB.NET 应用程序中这样做肯定会花费更长的时间。仅使用 SQL Server 视图和临时查询这样做不会提供太多信息,并且使用起来会更困难。