SSRS 2019连接打开耗时过高求助:迁移后报表加载缓慢
SSRS 2019 数据库连接复用配置方案
问题核心原因
SSRS 2012默认依赖ADO.NET连接池的复用逻辑,报表内多次数据集调用可共享同一连接;但2019版本在连接管理策略上有调整,默认情况下报表内的多次数据库调用会重复创建新连接,导致ConnectionOpenTime持续偏高。
可调整的配置项及操作步骤
1. 为连接字符串添加池化参数
检查报表所有数据集的连接字符串,显式添加连接池启用参数,强制复用连接:
Pooling=true;Min Pool Size=5;Max Pool Size=100;
Pooling=true:明确开启连接池(默认值为true,但显式设置可规避版本差异导致的默认行为变化)Min Pool Size=5:保持连接池内始终有5个空闲连接,避免每次调用都重新初始化连接Max Pool Size=100:限制连接池最大连接数,防止资源过度占用
2. 修改SSRS服务的全局连接池配置
打开SSRS服务配置文件ReportingServicesService.exe.config(默认路径:C:\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer\bin),找到<system.data>节点,添加或调整连接池参数:
<system.data> <settings> <add name="DbConnectionPoolTimeout" value="30"/> <add name="DbConnectionPoolMaxSize" value="100"/> </settings> </system.data>
DbConnectionPoolTimeout:设置连接池中空闲连接的超时时间(单位:秒),避免连接被过早回收DbConnectionPoolMaxSize:全局最大连接池容量,确保报表多次调用能复用已有连接
3. 统一报表内的数据集连接配置
- 若报表使用多个数据集,确保所有数据集使用完全一致的连接字符串(包括池化参数),SSRS会自动将同配置的请求归入同一连接池
- 优先使用共享数据集,所有引用该数据集的报表项会共享同一连接上下文,减少连接创建次数
4. 调整SSRS服务内存配置
内存不足可能导致连接池被强制回收,修改rsreportserver.config中的内存相关参数:
<Configuration> <Service> <MemoryLimit>80</MemoryLimit> <!-- 调整为服务器可用内存的80%左右 --> <RecycleTime>720</RecycleTime> <!-- 延长服务回收周期,单位:分钟 --> </Service> </Configuration>
验证方式
修改配置后重启SSRS服务,重新运行报表并查看ExecutionLog3的ConnectionOpenTime字段,确认后续数据库调用是否出现0ms的复用情况。
补充提示
若以上配置无效,需排查报表是否存在不同参数的连接字符串(即使连接同一数据库,字符串参数差异会触发独立连接池),需统一所有数据集的连接字符串配置。
内容的提问来源于stack exchange,提问作者IHopeThisWorks123
相关产品推荐
相关产品推荐

