1

我们有越来越多的非数据驱动的 SSRS 2008 订阅,而 SSRS 中的默认列表没有提供任何方式来指示每个订阅的全部内容。是的,有描述,但它是自动生成的,不是很有帮助。例如,我们需要它说“Company ABC Quarterly to Managers”。

我查看了使用 ReportingService2010 Web 服务,并设法不仅阅读了每个报告的描述,而且还对其进行了修改。但是,一旦有人从 SSRS 编辑订阅(有时需要这样做),描述就会恢复为自动生成的描述。

虽然我从未使用过数据驱动的报告,但我想知道这些是否会提供我需要的功能。鉴于我并不真正需要订阅数据驱动,因此设置起来似乎需要做很多工作。

我在这里错过了一些简单的东西吗?这个简单的功能是升级到更新的 SSRS 版本所附带的吗?

谢谢!

4

3 回答 3

1

我在这里错过了一些简单的东西吗?这个简单的功能是升级到更新的 SSRS 版本所附带的吗?

SSRS 2012 中的标准订阅似乎也不允许输入描述(虽然我找不到 UI 的屏幕截图)。

虽然我从未使用过数据驱动的报告,但我想知道这些是否会提供我需要的功能。鉴于我并不真正需要订阅数据驱动,因此设置起来似乎需要做很多工作。

如果标准订阅满足业务需求,我会反对数据驱动订阅的需求。这值得你花时间和精力吗?如果是,那么明显的优势是订阅描述在 UI 中是可编辑的,并且在修改订阅时似乎不会被覆盖。

如果您仍然对使用标准订阅感兴趣...

“破解” SSRS 以使订阅不会覆盖描述(无论如何在 UI 中不可编辑)的一种方法是修改存储过程 ReportServer.dbo.UpdateSubscription。

免责声明:使用以下建议需您自担风险。这涉及修改 Reporting Services 所依赖的标准存储过程。

您可以更改更新语句,以便仅在订阅不是数据驱动订阅时才修改描述值(我们不想破坏可在 UI中编辑的数据驱动订阅描述)。在存储过程中,您可以通过查看@DataSettings 的值来区分数据驱动订阅和标准订阅。如果是IS NULL,那么它是一个普通的旧订阅。如果是IS NOT NULL,那么我们正在研究数据驱动的订阅。

更新语句中的以下行:

[Description] = @Description,

可以改为:

[Description] = CASE WHEN @DataSettings IS NULL THEN [Description]
                        ELSE @Description
                    END,

这将在 SSRS 中修改所有标准订阅描述时保持相同,但允许修改数据驱动的订阅描述。

于 2012-09-13T16:26:32.707 回答
0

这是 dev_etter 对 hack 的扩展。我能够使用存储过程@parameter 输入和一个新的报表参数(pReportParameterName)来创建报表独有的动态、用户可控的描述。

  • 向报表添加新的隐藏文本参数 (pReportParameterName)
  • 在 UPDATE 语句上方的存储过程 UpdateSubscription 中添加下面的代码块 1。
  • 将 UPDATE 语句的“Description =”行更改为类似于下面的代码块 2。

通过该设置,创建或编辑定时订阅并将所需的文本输入到描述参数中。保存后,您应该会在订阅屏幕的描述列中看到输入的描述。

/*** Code Block 1 ***/
DECLARE @Param as XML = CAST(@Parameters as XML)
DECLARE @MY_Description as varchar(512)

SELECT  @MY_Description = e.f.value('(.)[1]', 'varchar (100)')
FROM (select 1 id, @Param xCol) tx
    CROSS APPLY tx.xCol.nodes('./ParameterValues/ParameterValue') AS a(b)
    CROSS APPLY a.b.nodes('./Name') AS c(d)
    CROSS APPLY a.b.nodes('./Value') AS e(f)
WHERE c.d.value('(.)[1]', 'varchar (100)') LIKE 'pReportParameterName'

   /*** Code Block 2 ***/
    [Description] = --@Description
                    CASE 
                        WHEN @DataSettings IS NULL 
                             AND @MY_Description IS NOT NULL 
                             THEN @MY_Description
                        ELSE @Description
                    END,

干杯,Sj

于 2017-05-31T19:41:27.063 回答
0

根据 Mat's Mug,我注意到我最终使用的解决方案:

由于我们所有的订阅都涉及通过电子邮件发送报告,因此我们可以将电子邮件主题字段重新用作描述。这样就可以生成所有订阅的列表,并为每个订阅显示任意描述。

于 2016-03-06T18:38:03.173 回答