在SSRS中,是否有可能列出实际使用的结果集字段?

3
我有很多SSRS报告和相应的存储过程,正在逐步整理和优化。我发现一些数据集有额外的字段,在实际报告中没有被使用,它们通常是 SELECT *的结果,在某些地方严重拖慢了SP的速度。
我想知道是否有更快的方法来查看数据集中哪些字段被使用/未使用,以更有效地清理存储过程。似乎逐个点击每个<<expr>>并勾选它们是荒谬的。

您想要的是在数据库层面上选择所需数量的列,以便数据集仅包含所需内容。很抱歉,在这种情况下,您将需要进入存储过程并对其进行处理。 - KrazzyNefarious
我知道这一点:), 这是我的问题的背景。但这些都是存储过程和报表,它们已经存在了多年,其中大部分都有每天交付的订阅,所以如果可能的话,我想在工作时避免破坏它们。 - Daniel E.
这个功能为什么还没有被加入到VS中呢? - Daniel E.
2个回答

2
我告诉你,我希望我知道一个可以简化这个过程的工具。 但是我并没有想到。 但是我确定您可以搜索rdl文本并找到这些详细信息。
当我解决现有报告(或SSIS包)的问题时,我经常这样做。
.rdl文件是可读的xml格式。 您可以在文本编辑器中打开任何一个文件并搜索文本-即使是Visual Studio,如果您“打开文件”而不是使用报告项目。
考虑到这一点,当然您可以使用您喜欢的编程语言编写例程来:
- 找到报表数据源中的查询或存储过程 - 运行它(仅作为元数据)以获取所有列 - 在rdl的文本中搜索每个列 - 如果使用xml查询将搜索限制为更实际的目标(如显示框数据源),则可以更具体
很抱歉我没有像现成的工具那样提供更方便的答案。
如果我记得,我可能会寻找一个,因为这对于像我们这样的“企业程序员”来说是个大问题。
如果我找不到,也许我会用.net编写脚本,并回来发布它:)

我编写了一个快速的.NET解决方案来完成这个任务。首先,它连接到报表服务器并将RDL作为XML提取出来。然后将其转换为XDocument格式,以便可以使用LINQ for XML。接下来,它从<Fields>部分创建数据字段列表。最后,它在每个字段中搜索<ReportSections>。最终输出是一个字段列表以及它们是否被使用。如果有兴趣,我可以发布一些样例代码吗? - Richard Hansell
我非常感兴趣,Richard。我知道这篇帖子很旧了,但如果你还有示例代码,你会让我非常高兴! 谢谢,Mike - Mike Dole

0

可以的!请按照以下步骤操作:

  • 右键单击rdl文件,
  • 点击查看代码。这将是一个XML格式
  • 按下CTR + F键以获得搜索文本框
  • 在文本框中输入任何字段的名称。
  • 使用前进箭头图标查看所搜索字段名称的出现次数
  • 如果文本字段在数据集和Tablixcell值中,则显示它在报表中被使用
  • 如果文本字段仅在数据集中,而不在任何Tablixcell值中,则表示它在报表中未被使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接