【问题标题】:ReportServer Database increasing in size. It's too bigReportServer 数据库的大小不断增加。这个太大了
【发布时间】:2019-09-05 09:34:51
【问题描述】:

我拥有的报表服务器数据库超过 300GB(注意 - 它是 ReportServer 而不是 ReportServerTempDB)。 dbo.segment 表有超过 3500 万条记录。我不太确定为什么它长得这么大。起初,我查看了快照并将站点设置下的限制设置为 10 天,而不是无限制。不幸的是,这并没有解决问题。请问有人可以给我任何关于下一步看哪里的建议吗?请注意,另一台服务器上的数据库大约为 5GB,我希望它在哪里。

【问题讨论】:

  • 我在这个主题上找到的每个主题都与 SSRS 2008 或 2008R2 相关; 2012+ 什么都没有。考虑到 2008 完全不受支持,也许这是尽快进行升级排序的另一个原因? :)
  • @larnu 感谢您的评论。不幸的是,我的公司将不会再升级一年。我只需要一些指导,不管 SQL 版本是什么可能导致这个值如此之高。提前致谢
  • 嗯,Segment 不是ReportServerTempDB 中的表吗?
  • ReportServer也有
  • 仅供参考:我的报告服务器数据库大约 2.3GB,占用的大部分空间都在 ExecutionLogStorage 中(这是 SQL Server 2016)。您是否根据磁盘空间或记录来查看表大小?在 SSMS 中单击 ReportServer 数据库中的表选项卡/文件夹,然后按 F7 打开对象资源管理器详细信息窗口。从这里您可以按“使用的数据空间”列排序,这应该指向罪魁祸首。还要检查数据库属性中“可用空间”下报告的数量。如果这很大,那么您也许可以缩小数据库。

标签: sql-server reporting-services ssrs-2008 reportserver


【解决方案1】:

ReportServerTempDB 数据库中的任何内容都可以删除,只要您在执行此操作时可以停止并重新启动报表服务器服务。

Report Server temporary database

每个报表服务器数据库都使用相关的临时数据库来存储由报表服务器生成的会话和执行数据、缓存报表和工作表。后台服务器进程会定期从临时数据库的表中删除旧的和未使用的项目。

如果临时数据库丢失,Reporting Services 不会重新创建它,也不会修复丢失或修改的表。虽然临时数据库不包含持久性数据,但无论如何您都应该备份数据库的副本,这样您就可以避免在故障恢复操作中重新创建它。

如果您备份临时数据库并随后恢复它,您应该删除其中的内容。一般来说,随时删除临时数据库的内容是安全的。但是,您必须在删除内容后重新启动 Report Server Windows 服务。

在这样做之前你绝对应该备份它,但是......你永远不知道有什么错误在等待。

ReportServer 数据库中最可能的数据库增长来源是报告历史快照。您可以通过站点设置 > 常规中的 SSRS 管理 Web 界面进行配置:

  • 选择报告历史的默认设置:
    • 在报告历史记录中保留无限数量的快照
    • 限制报告历史记录的副本 [数量](以天为单位)

或者,或者,通过 SSMS 通过 SQL Server 报告服务的服务器属性 > 历史面板:

  • 在报告历史记录中保留无限数量的快照
  • 限制报告历史记录的副本:[数量](以天为单位)

【讨论】:

  • 感谢您的帮助@alwayslearning。我已经尝试了限制快照报告,但这似乎没有帮助。我假设此后有一个清理工作,并且这是在 24 小时前完成的(报告服务已重新启动),并且大小保持不变。
  • ReportServer 数据库没有什么特别之处,因为它是一个和其他数据库一样的用户数据库。您可以通过使用sp_spaceused 遍历它们来查看哪些表正在消耗所有空间,即:exec sys.sp_spaceused @ObjName=N'ActiveSubscriptions'; ...; exec sys.sp_spaceused @ObjName=N'Users';
猜你喜欢
  • 2014-01-27
  • 1970-01-01
  • 2013-03-02
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
相关资源
最近更新 更多