2009-07-30 4 views
3

Ich möchte wissen, wie oft eine Reihe gespeicherter Prozeduren ausgeführt wird und wann sie das letzte Mal verwendet wurden.Wie protokolliere ich die Häufigkeit und die zuletzt verwendete Zeit für eine gespeicherte Prozedur?

die ich denke Anrufe an die Spitze jeder gespeicherte Prozedur in der Datenbank des Hinzufügen eine Tabelle einzufügen/aktualisieren, mit folgendem Schema:

SprocName ExecCount LastExec 
---------------------------------- 
GetCompany 434   2009-03-02 
ExportDist 2   2008-01-05 

Offensichtlich jeden sproc Hinzufügen von Code ist nicht genau produktiv.

Gibt es eine eingebaute Funktion von SQL Server 2005, die helfen kann?

Oder gibt es einen besseren Weg?

Antwort

3

Es gibt einen MSDN-Blog here, der über verschiedene Optionen spricht. Für SQL 2005, kocht diese nach unten:

  • eine serverseitige Ablaufverfolgung durchführen, beachten Sie, dass diese Option nicht ein geringes Gewicht ist
  • Ändern Sie Ihre gespeicherten Prozeduren zu tun, um die Protokollierung der Ausführung enthalten
1

Ich bin nicht mit viel Erfahrung zu beantworten, aber ich denke, dass andere Optionen hier gezeigt wie Leistung würde benachteiligt wurde Tracing, während eine Linie an der Spitze jedes Hinzufügen Proc wäre sehr leicht während der Ausführung (sogar sehr viel Arbeit abhängig davon, wie viele Sie haben).

Ich würde einen neuen SP erstellen, der protokolliert und als Parameter den Namen des aufrufenden SP nimmt und die Logik hat, wo er eingefügt oder aktualisiert werden soll. Auf diese Weise fügen Sie Ihrem anderen SP nur eine Zeile hinzu und übergeben ihren Namen als Parameter.

1

Die genaueste Methode, um Ihr Ziel zu erreichen, ist die Verwendung einer benutzerdefinierten Protokollierungslösung, die in Ihre gespeicherten Prozeduren integriert ist.

Sie können die Dynamic Management Views (DMVs) von SQL Server verwenden, da andere nicht genau wissen, welche Abfragen/gespeicherten Prozeduren auf Ihrem Server ausgeführt werden, aber der eigentliche Zweck dieser DMVs ist einen Einblick in das Performance-Tuning geben und keinen Audit-Trail bereitstellen.

Zum Beispiel: How to identify the most costly SQL Server queries using DMV’s

Der von der DMV zur Verfügung gestellten Daten in Frage (sys.dm_exec_query_stats etc.) nur detailliert die Abfragepläne, die derzeit in dem SQL Server-Plan Cache gespeichert werden und so kann nur eine begrenzte Perspektive bieten der Serveraktivität.

SQL Server-Onlinedokumentation: sys.dm_exec_query_stats

Verwandte Themen