【发布时间】:2017-06-09 12:15:00
【问题描述】:
我们有一个运行SQL Server 2012 (SQL Server 11.0.2100) 的开发服务器。当我们在同一台服务器上运行多个项目时,我们已经配置了单独的 SSRS 实例。
SQL 服务器:WIN-SRVR\SQL2012 SSRS 实例:WIN-SRVR\SQL2012SSRS
我们有一个 2012 年实例的数据库。 SSRSinstance Dataset 指向 2012。
现在的场景是当我们执行存储过程时,返回数据集的时间不到 1 秒。而同一份报告需要将近 10 分钟才能在页面上呈现。我试图从浏览器和报表生成器中直接从http:// WIN-SRVR/Reportserver2012 生成。每次显示报告都需要花费大量时间。
我检查的要点是:
- 64 GB 内存
- 至强处理器
- 平均内存利用率 18 GB(可用内存 > 40 GB)
- 数据集返回大约 4000 行。我猜这很容易被 4 GB RAM 服务器处理。
- 应用程序、数据库服务器、SSRS 服务器都在同一台机器上。
活动监视器在生成此查询时显示一个暂停的查询。
ReportServer.dbo.GetSessionData;1
我可以看到昂贵或等待的查询是:EXEC #am_get_querystats
检查了数据库上的资源锁定,这表明 ReportServer.dbo.GetSessionData;1 被 ReportServer.dbo.WriteLockSession;1 阻止。这将持续约 2 分钟,锁被释放,报告完成生成。
我尝试过的疑难解答
- 重新启动 SSRS 服务.. SQL 服务。所有 4 项服务,包括代理和浏览器。
- 重启服务器
- 重建服务器上的所有索引。检查执行计划以及是否缺少任何索引。创建它。
- 禁用所有正在运行的作业。
- 使用报表生成器和浏览器直接在服务器上生成报表。
没有任何帮助。
以下是活动监视器的截图
任何人都知道为什么当 SQL 查询不需要任何时间时会发生这种情况。但是报表渲染需要很长时间才能显示数据。
DECLARE @fromdate VARCHAR(50)
DECLARE @todate VARCHAR(50)
DECLARE @usagetypeid NVARCHAR(10)
DECLARE @paytype INT
DECLARE @userid INT
SET @fromdate = '01/01/2017'
SET @todate = '09/06/2017'
SET @usagetypeid = '0'
SET @paytype = 0
SET @userid = 1
SELECT CONVERT(VARCHAR, pb.PaymentDate, 103) AS PaymentDate ,
pm.OldFormNo AS PropertyFormNo ,
ROUND(CAST(pb.ReceiptNo AS NUMERIC), 0) AS ReceiptNo ,
ISNULL(pm.OwnerFirstName, '') + ' ' + ISNULL(pm.OwnerMiddleName, '')
+ ' ' + ISNULL(pm.OwnerLastName, '') AS UserPersonName ,
pm.OwnerFirstName AS 'OwnerFirstName' ,
pb.PaidAmount ,
pb.PayableAmount ,
pb.ChequeDDno AS ChequeNo ,
pb.BillPaymentId
FROM propertymaster pm
JOIN PropertyBillPayment pb ON pm.PropertyId = pb.PropertyId
WHERE pb.PaymentDate BETWEEN CONVERT(DATE, @fromdate)
AND CONVERT(DATE, @todate)
AND pm.UsageTypeId = CASE WHEN @usagetypeid = 0 THEN pm.UsageTypeId
ELSE @usagetypeid
END
AND pb.isDeleted = 0
AND pb.cancel = 0
ORDER BY pb.PaymentDate DESC
【问题讨论】:
-
我们能否看到查询或至少了解查询在做什么? - 您使用的是集成的还是独立的共享点?
-
您可能还对参数有问题-这里有一篇相关文章:stackoverflow.com/questions/23963262/…
-
查询如下:
-
正如我之前评论中提供的链接中所建议的那样,这个问题听起来像是一个参数嗅探问题,众所周知,您可以查看我建议的页面,特别关注 OPTION (RECOMPILE) 的使用- 如果这能解决您的问题,请告诉我们。
标签: sql-server sql-server-2008 reporting-services