2008-11-10 160 views
27

我们有一些SQL服务器报告服务报告。我没有写,但我必须照顾他们。SQL服务器报告服务:如何在打开时停止报告触发

这些报告在浏览器中打开时触发,并且使用默认参数(搜索条件和限制为空),它们检索很多数据,速度很慢。客户宁愿直到用户输入参数并按下“查看报告”才会生成报告

不幸的是,我不知道SSRS是否完好 - 如何在打开报告时停止报告?


的如何做到这一点上部署的报告(按Rihan Meij的答案)的细节如下:

点击报告,单击“属性”排在首位。您可能需要等一会儿,因为慢速报表可能正在运行。然后点击左边的“参数”。

对于每个参数,请确保已选中“提示用户”,并且对于至少一个参数,“不默认”未被选中。再次点击左上方的“查看”(或返回到文件夹并单击报告名称)查看报告,并注意报告不会立即启动。

在报告生成器中,您可以通过“过滤器”菜单执行此操作。从至少一个过滤器中取消选择值,并保存报告。

当报告没有参数时,是否也可以在加载时停止报告?

+5

这很好,你在文本中解释它,因为没有任何指向下面提供的屏幕截图的链接工作了。 – Bratch 2010-01-07 16:29:44

回答

13

我发现我必须设置报表参数的至少一个没有默认值保留从autorunning报告。

我不得不使用此配置(请注意,我离开没有默认参数的所有3个接受空值,因此用户只需点击空复选框):

[截图失踪]

得到用户可以看到这一点,从autorunning保持报告:

[截图失踪]

+2

由于外部链接断开,此篇文章中的重要信息已经消失。如果可以,请恢复缺失的屏幕截图。 – deceze 2016-11-28 10:04:50

3

我已经通过改变我的查询slighlty来运行时需要参数。

我已经在报告网站上发布了报告后,指定参数,应该提示用户。这确实有这样的效果,即当用户打开报表查看时,报表不会将sql服务器拉到最低限度。

attached screenshot(一张图片胜过千言万语,吧:))

+4

被阻止的链接12 – Mike 2014-07-25 14:48:30

+0

您的链接已死在“附加屏幕截图”中 – 2017-12-05 12:40:43

1

我找到了最好的方法是在一个参数不允许空值增加,但不使用报告。这会阻止它在开始时呈现,但不会影响报告。

唯一的缺点是,如果您在报表查看器中显示报表,则在顶部有一个框,看起来有点奇怪。我相信你可以使用一些C#/ CSS来隐藏它。

由于我没有使用报表查看器来显示,只能在后端渲染,这并不影响我。

即使您正在使用报表查看器,它在开发时也很有用!

1

我这样做只是提供一个默认值的关键参数,不返回任何结果。

+0

例如,如果您的关键参数将部门名称作为文本,则只需将默认值指定为“NO-AUTO-RUN”,这样数据集将不会导致结果。 – George 2012-12-21 11:36:51

2

我知道这篇文章有点旧,但由于我有另一个解决方案在这里,我只是张贴它,以防有人需要它。

如果您使用ReportViewer的posible来设置属性ShowBody =“False”。然后在OnSubmittingParameterValues事件上,将ShowBody属性更改为true。那么在报告中不需要任何额外的参数或没有默认值的参数。

<rsweb:ReportViewer 
     ID="rv" 
     runat="server" 
     Width="100%" 
     Height="100%" 
     SizeToReportContent="false" 
     ZoomMode="PageWidth" 
     KeepSessionAlive="true" 
     ProcessingMode="Remote" 
     PromptAreaCollapsed="false" 
     InteractivityPostBackMode="AlwaysAsynchronous" 
     AsyncRendering="true" 
     ExportContentDisposition="AlwaysInline" 
     ShowReportBody="False" 
     ShowPrintButton="false" 
     OnSubmittingParameterValues="rv_SubmittingParameterValues"/> 

然后在rv_SubmittingParameterValues方法:

this.rv.ShowReportBody = true; 
3

我我的参数选择之一的默认值设置为-1值不存在(不是有效的参数值)。这并没有产生错误。它只需将参数下拉框设置为并阻止报告运行。我无法使用NULL的默认值,因为NULL选择了所有内容,并且我希望用户在报表运行之前有目的地选择ALL(NULL)。如果选择ALL,则报告需要几分钟的时间。

1

在使用具有可选字段的报表时,我发现了一个很好的技巧,但是如果可选字段为空,则会提取大量数据。

第1步:防止自动射击

  • 确保“允许空值”未启用的可选参数
  • 确保没有为可选参数没有默认值

步骤2:使参数可选,而不使用“空”

  • 启用“允许空白值”f或可选参数
  • 修改您的where子句中的可选参数 WHERE (@param="" OR column = @param)

使用这种方法存在的额外的字段为最终用户担心,该报告将不火,直到它被请求时,如果文本框留空,则where子句中的条件将不会被评估。


注:如果报告指定可用值,则认为是无效的表结构可以用来代替“”任何值,也可以与其他数据类型(非字符串)这样使用