【发布时间】:2018-03-26 13:20:29
【问题描述】:
我正在处理大型生产数据库中索引严重碎片化的问题。我几乎已经确定了严重分散的索引,包括那些没有真正被使用的索引。我计划重建一些并移除其他的。所以我的下一步是设计一个前后时间测试。
其中一个症状是 SSRS 报告需要大约一个小时才能呈现。我是 Reports Services 的新手。我可以看到使用 ReportViewer 控件并设置了 ServerPort ReportPath 和 ReportServerUrl 属性的报表被嵌入到 ASPX 页面中。我的问题是试图弄清楚如何在代码隐藏中从头到尾显示报告的时间。我可以将开始时间写入 Page_Load 中的文件,但我不知道如何记录结束时间......预渲染可能会挂起,我不确定这是否是我唯一可以的页面生命周期事件点击进入记录这一点。我应该使用 Windows 服务吗?如果是,我将如何以这种方式触发/记录开始和结束时间?
如果这可以通过显示页面的代码隐藏,我非常感谢一些反馈。
【问题讨论】:
-
您是否尝试过查看 Reporting Services 执行日志。其中包含几个定时事件,例如数据检索时间、渲染时间、处理时间以及实际开始和结束时间。检查
ReportServer.dbo.Executionlog和ReportServer.dbo.Catalog -
我只能看到一个包含这些字段的 ExecutionLogStorage 表。我试着运行这个:“SELECT TOP (10) * FROM ExecutionLogStorage ORDER BY TimeDataRetrieval DESC”但得到了“System.OutOfMemoryException”类型的异常。
-
他们应该在那里(视图)。 docs.microsoft.com/en-us/sql/reporting-services/report-server/… 还确保报告服务器配置中的保留期未设置为 0。
-
不确定在哪里检查?在我的本地(32GB)上只运行 SSMS,无论我如何过滤我的查询,我都会遇到内存不足的异常。查看我的内存使用情况,运行查询时它远未达到峰值。如何确定 ReportID 提交的报告是指哪个报告?
-
感谢您的帮助艾伦。我通过使用 SQLCMD 工具运行查询来解决内存问题。请随时将此添加为答案,我会将其标记为已接受。 docs.microsoft.com/en-us/sql/relational-databases/scripting/…
标签: asp.net reporting-services reportviewer ssrs-2014