2017-07-28 77 views
0

我想确定哪些SSRS报告已运行超过5分钟,但仍在运行确定已运行超过5分钟的SSRS报告

SSRS执行日志仅显示报表加载后的条目,而下面的查询未向我显示长时间运行的查询的来源,因此我无法将其与报表绑定。

我想用它来杀死长时间运行的报告。 [SQL Server 2012]

任何人都可以帮忙吗?

SELECT st.text, 
      qp.query_plan, 
      qs.* 
    FROM (
     SELECT TOP 50 * 
     FROM sys.dm_exec_query_stats 
     ORDER BY total_worker_time DESC 
    ) AS qs 
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st 
    CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp 
    WHERE qs.max_worker_time > 300 
      OR qs.max_elapsed_time > 300 
+0

什么是报告运行,你可以看到报告后面的SQL?你是SQL分析工具,看看它在等待什么? – BobNoobGuy

+0

我可以看到使用上述查询运行的查询,但是如何将它与报表绑定?一些报告具有多个查询,并且一些报告共享相同的查询。 – BelgoCanadian

+0

如果你不能看到RDL文件后面的SQL,那么一些数据库管理员可能需要插入。但我经常想知道RDL文件背后的SQL。并在SSMS中原始运行。如果它在SSMS中变慢,那么可以采取下一个动作来优化查询。 – BobNoobGuy

回答

0

安装了Reporting Services后,您可以查询runningjobs表。警告:你有什么版本的SQL Server?

USE ReportServer; 

DECLARE @cutoff DATETIME; 
SET @cutoff = DATEADD(minute, -5, GETDATE()); --Five minutes ago 

SELECT JobID, JobType, JobStatus, RequestName, StartDate 
FROM RunningJobs 
WHERE StartDate < @cutoff --prunes records that haven't run for five minutes yet 
ORDER BY StartDate --oldest first 
+0

奇怪的是,我无法得到这个显示任何信息。我有目的地做了一个大量的报告,但没有显示这个查询。 我正在运行SQL Server 2012 – BelgoCanadian

+0

它已经超过五分钟了? – quest4truth

+0

是的,即使我删除了where子句,它仍然不显示任何内容。 – BelgoCanadian

0

这里是一些读,可能在故障排除有助于减缓SSRS报告 https://technet.microsoft.com/en-us/library/bb522806(v=sql.105).aspx

https://www.mssqltips.com/sqlservertip/2328/sql-server-reporting-services-reports-performance-debugging-and-analysis/

Fast query runs slow in SSRS

SELECT TOP1000 *FROM[ReportServer].[dbo].[ExecutionLog2] 

SELECT TOP1000 *FROM[ReportServer].[dbo].[ExecutionLog3] 

,或者你可以利用SQL监测的14天的免费试用,从展鹏 http://www.red-gate.com/dynamic/products/dba/sql-monitor/download

0

我假设你正在运行通过SQL Server代理作业的报告。 而且,这就是我正在使用的,

SELECT 
    * 
FROM 
    msdb.dbo.sysjobs_view job 
     INNER JOIN msdb.dbo.sysjobactivity activity 
     ON (job.job_id = activity.job_id) 
WHERE 

     run_Requested_date>dateadd(MINUTE,-5,getdate()) 
    AND stop_execution_date is null)