确定已运行超过5分钟的SSRS报告
我想确定哪些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
安装了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
奇怪的是,我无法得到这个显示任何信息。我有目的地做了一个大量的报告,但没有显示这个查询。 我正在运行SQL Server 2012 – BelgoCanadian
它已经超过五分钟了? – quest4truth
是的,即使我删除了where子句,它仍然不显示任何内容。 – BelgoCanadian
这里是一些读,可能在故障排除有助于减缓SSRS报告 https://technet.microsoft.com/en-us/library/bb522806(v=sql.105).aspx
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
我假设你正在运行通过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)
什么是报告运行,你可以看到报告后面的SQL?你是SQL分析工具,看看它在等待什么? – BobNoobGuy
我可以看到使用上述查询运行的查询,但是如何将它与报表绑定?一些报告具有多个查询,并且一些报告共享相同的查询。 – BelgoCanadian
如果你不能看到RDL文件后面的SQL,那么一些数据库管理员可能需要插入。但我经常想知道RDL文件背后的SQL。并在SSMS中原始运行。如果它在SSMS中变慢,那么可以采取下一个动作来优化查询。 – BobNoobGuy