0

Ich möchte identifizieren, welche SSRS-Berichte über 5 Minuten ausgeführt wurden, aber werden noch ausgeführt.Identifizieren SSRS-Berichte, die über 5 Minuten ausgeführt wurden

Das SSRS-Ausführungsprotokoll zeigt nur einen Eintrag AFTER der Bericht geladen hat und die folgende Abfrage zeigt mir nicht die Quelle der lang laufenden Abfragen, so dass ich es nicht an einen Bericht binden kann.

Ich möchte dies verwenden, um Spids lang laufenden Berichten zu töten. [SQL Server 2012]

Kann jemand helfen?

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

, was der Bericht läuft können Sie sehen, die SQL hinter dem Bericht? Haben Sie SQL-Analyse-Tool, um zu sehen, was es während des Wartens tut? – BobNoobGuy

+0

Ich kann sehen, dass die Abfrage mit der obigen Abfrage ausgeführt wird, aber wie kann ich das mit einem Bericht verknüpfen? Einige Berichte haben mehrere Abfragen und einige Berichte teilen dieselben Abfragen. – BelgoCanadian

+0

Wenn Sie die SQL-Datei hinter der RDL-Datei nicht sehen können, müssen möglicherweise einige Datenbankadministratoren einspringen. Aber ich möchte oft die SQL hinter der RDL-Datei wissen. und führen Sie es in SSMS rohe. Wenn es in SSMS langsam wird, kann die nächste Aktion ausgeführt werden, um die Abfrage zu optimieren. – BobNoobGuy

Antwort

0

Mit den installierten Reporting Services gibt es eine runningjobs-Tabelle, die Sie abfragen können. Vorbehalt: Welche Version von SQL Server haben Sie?

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

Seltsamerweise kann ich das nicht dazu bringen, irgendwelche Informationen zu zeigen. Ich habe absichtlich einen heftigen Bericht gemacht, aber er zeigt sich nicht mit dieser Frage. Ich führe SQL Server 2012 – BelgoCanadian

+0

Es dauert mehr als fünf Minuten? – quest4truth

+0

Ja, auch wenn ich Ihre Where-Klausel entferne, zeigt es immer noch nichts. – BelgoCanadian

0

hier einige zu lesen, dass bei der Fehlersuche Langsame SSRS berichten 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] 

oder

SELECT TOP1000 *FROM[ReportServer].[dbo].[ExecutionLog3] 
helfen könnte

oder Sie nutzen eine 14 Tage kostenlose Testversion von SQL Monitor von RedGate http://www.red-gate.com/dynamic/products/dba/sql-monitor/download

0

nehmen kann ich davon ausgehen, dass Ihr diese Berichte über SQL Server-Agent-Aufträge ausgeführt werden. Und das ist, was ich für diese Verwendung

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) 
Verwandte Themen