none
Profiler mit Zeitplan laufen lassen? RRS feed

  • Frage

  • Hallo Leute,

    kann man den Profiler mit einem Zeitplan laufen lassen?

    Hintergrund: Es gibt eine Prozedur mit einer Reihe von SQL Statements, die ab und zu zu hängen (nicht regelmäßig) scheint. Ich möchte jetzt rausfinden, was da los ist. Wenn das Problem auftaucht, ist der ganze Server tot und alles nachfolgende wird nicht augeführt bzw. hängt auch. Weder Windows- noch SQL Serverprotokolle geben etwas her.

    Ich dachte jetzt, ich könnte einen Profiler-Trace aufsetzten, der täglich zwischen 20:00 und 21:00 mitläuft, ohne das immer manuell anstoßen zu müssen.

    Geht sowas? Ich habe leider nichts dazu gefunden.

    W2003 R2 SP2 64 bit, SQL Server 2005 - 9.00.4053.00 (X64) Standard

    Gruß
    Christa

    Freitag, 27. August 2010 09:55

Alle Antworten

  • Hallo Christa,

    ja, das kannst Du machen, indem Du den Profiler als Windows Scheduler Task laufen läßt. Der Profiler kann nämlich auch als Command ausgeführt werden.

    Lediglich das Abschalten ist so nicht möglich. Aber Du kannst dann ja am Morgen den Prozess wieder killen ;-)

    Eine weitere Möglichkeit - damit das Log nicht zu groß wird - bestünde in der Einschränkung bei der Konfiguration des Templates. Hier kannst Du angeben, dass z. B. EndTime <=21:00 Uhr sein soll

    Infos über die entsprechenden Parameter findest Du u. a. hier:

    http://pentonizer.com/sql-server/sql-profiler-command-line-options/


    Uwe Ricken
    Microsoft Certified Database Administrator SQL Server 2005
    db Berater GmbH
    http://www-db-berater.de
    Freitag, 27. August 2010 09:59
  • Hallo Uwe,

    Du bist aber schnell. ;-)

    Danke, wir werden es uns anschauen. Sieht so aus, als könnte uns das helfen.

    Freitag, 27. August 2010 10:06
  • Hallo Christa,

    es gibt noch eine weiter möglichkeit. Nachdem Du Deine  Ablaufverfolgung erstellt hast, kannst Du diese exportieren als Script für Ablaufverfolgungsdefinition. Dieses Script führst du dann im SQL Server Managmentstudio aus, wo es dann gespeichert ist. Dort bekommst du dann auch eine Trace-ID mit der Du diese Ablaufverfolgung ansprechen kannst. Jetzt kannst du diese mittels den Befehlen:

     -- trace starten
    exec sp_trace_setstatus 2,1

    -- trace anhalten
    exec sp_trace_setstatus 2,0

    ein- und ausschalten. (In diesem Falle war die Trace-ID 2.)

    Diese Befehle kannst Du über einen SQL-Server-Agent  Auftrag ausführen und kannst so die Ablaufverfolgung um 20:00 Uhr einschalten und um 21:00 Uhr wieder aus.

    Gruß Korodamos

    Freitag, 27. August 2010 12:18
  • Hallo Christa,

    anstatt des SQL Server Profilers mit seinem zusätzlichen Overhead,
    kannst Du den serversetigen Trace nutzen, wie Christoph in Serverbasierter Trace

    Das Starten und Stoppen kannst Du dann via SQL Server Auftrag zu den
    potentiellen Zeiten ausführen, wie auch Korodamos zeigt.
    Oder eben schnell aktivieren, wenn es anfängt zu rauchen ;-)

    Gruß Elmar

    Freitag, 27. August 2010 13:39
  • Hallo Elmar und Korodamus,

    danke auch euch für die Ideen.

    Serverseitiger Trace geht leider nicht, wir wollen die Daten mit einem bestimmten Tool analysieren, da muß eine bestimmte Vorlage verwendet werden.

    Und manuell abschalten ist auch so eine Sache, weil diese Prozedur abends automatisch läuft.

    Freitag, 27. August 2010 14:05
  • Hallo Christa,

    ich will Dir das nun nicht als "besser" verkaufen, aber:

    Man kann so ziemlich alle Vorlagen über den Profiler Datei -> Exportieren
    in ein entsprechendes SQL Skript umwandeln.
    Und die Trace-Datei im Nachhinein damit  öffnen.

    Gruß Elmar

    Freitag, 27. August 2010 14:19