Überprüfen Sie, ob die gespeicherte Prozedur ausgeführt wird

8

Wie überprüft man, ob eine gespeicherte Prozedur oder Abfrage in SQL Server noch läuft?

Ideen

  1. Ich habe daran gedacht, ein Protokoll zu erstellen, in das geschrieben werden kann, wenn der Vorgang beginnt, und zu löschen, wenn es endet.

    Fehler:

    • Es bleibt der Fall offen, wenn der Server neu gestartet wird oder ein Fehler innerhalb der Prozedur auftritt.
    • Diese Methode muss vor dem Ausführen der Prozedur ausgeführt werden, sodass sie nicht auf bereits ausgeführte Prozeduren angewendet werden kann.
  2. Verwenden Sie den Prozessmonitor

Ich würde eine Lösung vorziehen, die als gespeicherte Prozedur mit procedure_name und / oder pid , parameters als Eingabe eingebunden werden kann, so dass Programme oder Lösungen, die die SQL Server-Schnittstelle verwenden, nicht funktionieren.


Update # 1

Anwendungsbeispiel:

%Vor%

Die Prozedur sollte wie

aufgerufen werden %Vor%

und geben wahr während des Betriebs (für 20 Sekunden) und false nach oder wenn die Funktion fehlschlägt oder das System neu gestartet wird

zurück     
Stefan Rogin 15.09.2014, 10:47
quelle

4 Antworten

7

Sie können sys.dm_exec_requests abfragen, was session_ID, waittime und weitere Zeilen von Interesse liefert und CROSS APPLY sys.dm_exec_sql_text Ihre Abfrage mit der SQL für Ihre Prozedur filtert.

%Vor%     
bummi 15.09.2014, 11:51
quelle
1

Verwenden Sie dies:

%Vor%

Es gibt alle db-Aktivitäten zurück.

Sie werden von diesem Proc überprüfen, ob Ihr Verfahren gerade läuft oder nicht.

Ich werde es auch versuchen:

%Vor%     
Navneet 15.09.2014 11:21
quelle
1

Alter Thread, aber du kannst das tun,

%Vor%     
HMan06 08.09.2016 16:05
quelle
0

Ich habe versucht, herauszufinden, wie man die Liste der laufenden Prozeduren bekommt, und bin auf diesen Thread gestoßen. Nach ein wenig Forschung auf MSDN konnte ich die folgende Abfrage herausfinden, die das liefern wird Liste der laufenden Prozesse:

%Vor%

Ein bisschen mehr Arbeit wird benötigt, um die Parameter zu erhalten.

    
John Clayton 27.05.2015 13:21
quelle