none
Feststellen, welche Prozedur läuft aktuell? RRS feed

  • Frage

  • Hallo,

    Wie kann man feststellen, welche Prozedur(en) aktuell laufen?

    Herzlichen Gruß
    Herbert

    Montag, 14. Mai 2012 08:49

Antworten

Alle Antworten

  • Hi,

    du kannst mit der Systemview sys.dm_exec_procedure_stats den Status der Prozeduren sehen. Allerdings nur das Datum der letzten Ausführung.

    select * from [sys].[dm_exec_procedure_stats]

    Grüße

    Oliver

    Montag, 14. Mai 2012 09:29
  • Das wäre mir nicht ausreichend. Mir geht es darum zu sehen, ob die Prozedur "Unbekannt" noch läuft bzw. beendet ist oder vom System abgebrochen ist.

    Zumindest weißt ich jetzt, mit was ich die Suchmaschinen füttern kann ;-)

    Montag, 14. Mai 2012 09:55
  • Hallo Herbert,

    Siehe TechNet Script Center: http://gallery.technet.microsoft.com/scriptcenter/Current-processes-and-d9b4c8d9 und  http://gallery.technet.microsoft.com/scriptcenter/Active-Transactions-with-9e922a57

    Vielleicht hilft Dir das weiter.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing


    Montag, 14. Mai 2012 10:23
  • Hallo Olaf,

    http://gallery.technet.microsoft.com/scriptcenter/Current-processes-and-d9b4c8d9

    ...ist schon mal perfekt. Danke.

    Kannst Du/Ihr mir erklären, warum die Angabe bei ProcessStatus sich während der Laufzeit zwischen suspended und runnable fortlaufend wechselt?

    Herzlichen Gruß
    Herbert

    Montag, 14. Mai 2012 13:14
  • Hallo Herbert,

    Siehe MSDN sys.sysprocesses (Transact-SQL) => Feld "Status".

    Wenn der Prozess den Status "runnable" hat, befindet er sich in der Warteschlange, bei "Suspended" wartet der Process auf Resourcen. Je nach dem, wie resourcen-intensiv der Process ist, wechselt er zwischen den Statis hin un her.


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Montag, 14. Mai 2012 13:21
  • Jetzt muss ich den alten Thrend nochmal aufleben lassen.

    Stelle fest, das die Procedure (Dauer ca. 10-20min.) nicht immer sichtbar in der Liste ist, was mit diesem SQL-Script erstellt wurde. Warum nicht? Gibt es evtl. einen besseren Vorschlag?

    Dienstag, 4. Dezember 2012 13:28
  • Hallo Herbert,

    wenn Dich speziell Prozeduren interessieren, wäre sys.dm_exec_procedure_stats ein direkter Weg,
    für Abfragen im allgemeinen wiederum sys.dm_exec_query_stats

    Beachte die Hinweise, dass das Ergebnis einer Abfrage nicht unbedingt die aktuellen Situation widerspiegelt,
    je nachdem wie viel Last auf dem Server ist (schließlich ist es nur Statistik).

    Wenn Dich aber eigentlich "nur" interessiert, ob eine Prozedur noch läuft,
    solltest Du die Prozedur besser einen Eintrag in einer Protkoll-Tabelle machen lassen.

    Alternativ kann man auch sp_getapplock verwenden - was auch das Blockieren von mehrfachen Aufrufen ermöglicht.
    In sys.dm_tran_locks findest Du dann die Sperre vom Typ APPLICATION und resource_description enthält den Resource-Schlüssel (plus Zusatz).

    Gruß Elmar

    Dienstag, 4. Dezember 2012 14:18
  • Danke für die Antwort.

    Mich interessiert nur eine Prozedure, diese ruft noch eine zweite Prozedure auf.

    Eintrag in einer selbst erstellen Tabelle habe ich, aber wenn das Script z.B. abgebrochen oder hängt (zu große Last), kann auch kein Eintrag mehr erfolgen. Somit sehe ich nicht ob es noch läuft oder nicht. 

    Jetzt habe ich festgestellt, wenn ich das gleiche Script wie in der Prozedure im SQL-Manager starte, läuft das Script durch.  Beim Start als Prozedure nicht!?


    • Bearbeitet Billardheld Mittwoch, 5. Dezember 2012 14:38
    Mittwoch, 5. Dezember 2012 14:37