/ / Wie wird die Ausführung der Prozedur verfolgt? - SQL, SQL-Server

Wie wird die Ausführung der Prozedur verfolgt? - SQL, SQL-Server

Ich habe einige Prozeduren, die nicht optimiert sind. Ich möchte analysieren, ob diese Verfahren optimiert werden oder nicht, da es nur keine Bulk-Daten zu überprüfen gibt.

Ich möchte eine SQL-Abfrage in das gesamte Verfahren einfügenwas in eine Tabelle einfügen wird, was genau die Zeit ist, die die obige Abfrage zur Ausführung benötigt. Ich werde eine Tabelle erstellen, in der meine Prozedur die Ausführungszeit der Abfrage einfügen wird.

Kann ich das irgendwie machen?

Antworten:

2 für die Antwort № 1

Wenn Sie es in Ihre Prozedur integrieren möchten, legen Sie eine Variable fest, die die Ausführungsstartzeit am Anfang speichert und am Ende der Prozedur mit der aktuellen Zeit subtrahiert.

/* Start of your procedure */
Declare @startTime datetime = GETDATE()
Declare @duration varchar

/* Your procedure */
...

/* End of your procedure */
Set @duration = CONVERT(VARCHAR(8),GETDATE() - @startTime,108)
Insert into statisticTable
Values ("procedureName", @duration)

1 für die Antwort № 2

Hast du versucht das zu benutzen? SQL Profiler?

In Trace-Eigenschaften können Sie definieren Start Time und End time von Stored Procedures. Es ist ein sehr mächtiges Werkzeug.


0 für die Antwort № 3

Sie können die oben genannten Dinge mit überprüfen Dynamische Verwaltungsansichten....

Wenn Sie die alte Version von SQL SERVER verwenden, verwenden Sie SQL Server Profiler ....


-1 für die Antwort № 4

Warum willst du das machen?Es gibt viele Tools wie DMVs, Trace, Exevents usw. Sie fügen Ihrem Prozess zusätzliche Kosten hinzu, wenn Sie diese Art von Code verwenden. Am besten ist dm_procedure_stats DMV, aber nur in 2008 R2 und höher. Verwenden Sie dm_exec_query_stats für ältere Versionen, diese geben Ihnen viel bessere Statistiken über die Zeit, logische IO, cputime und physikalische IO's etc.