Gibt es eine Möglichkeit, innerhalb eines Skripts zu pausieren oder kurz zu warten?

8

Ich gehe davon aus, dass das, was ich fragen werde, typischerweise in den Bereich der "schlechten Praxis" fallen würde, aber ich möchte trotzdem fragen, weil diese Funktionalität nützlich ist, um Probleme zu diagnostizieren und lang laufende Skripte zu markieren.

Kurz gesagt, gibt es eine Funktion, die in SQL Server integriert ist, die ich aufrufen könnte, die es mir erlauben würde, für eine kurze Zeit "anzuhalten"?

Ich habe einen nächtlichen SSIS-Prozess, der nach dem Export von Daten verschiedene Teilmengen statistischer Daten generiert. Immer wenn ich Probleme mit den Ausführungszeiten des SSIS-Pakets habe, habe ich eine Reihe von gespeicherten Diagnoseprozeduren, die ich mit Hilfe aufrufen kann, um zu diagnostizieren, bei welcher Export- / Masseneinfügung die Ausführung außergewöhnlich lange dauert.

In der zweiten Hälfte meines SSIS-Prozesses, bei dem ich statistische Daten erzeuge, wäre es sehr hilfreich, wenn ich analysieren könnte, wo der Prozess sich aufhält oder wie schnell er die Daten in meinen Datentabellen ändern kann. Der größte Teil der statischen Prozedur beginnt mit dem Einfügen der Daten in eine Tabelle, die über WHILE-Schleifen durchlaufen und aktualisiert wird, wenn die erforderlichen Bedingungen erfüllt sind.

Ich kann meine Daten leicht abfragen, um eine bestimmte Metrik zu erfassen, während meine gespeicherten statistischen Prozeduren ausgeführt werden. Was ich gerne tun würde, ist, dass ich diese Metrik nehme, genau 1 Sekunde (oder eine bestimmte Zeitspanne) warte und die Metrik erneut ergreife, damit ich sie vergleichen kann.

Indem ich eine "Pause" implementieren kann, kann ich robustere Diagnoseskripte erstellen, die aussagen, wie viele Einfügungen, Aktualisierungen oder Berechnungen pro Sekunde ausgeführt werden, und damit abschätzen kann, welche Teile meiner größeren Prozeduren am längsten dauern.

Ich würde davon ausgehen, dass möglicherweise einige Diagnosetools in SQL Server Management Studio verwendet werden können. Ich gebe zu, daran habe ich nicht gebastelt. Wenn jedoch ein Werkzeug in SSMS vorhanden ist, kann ein Großteil der Back-End-Funktionalität durch irgendeine Art von ausgefallenem Scripting nachgeahmt werden. Eine weitere mögliche Einschränkung bei der Verwendung von integrierten Diagnosen ist, dass ich diese Metriken lieber ausführen möchte, während das SSIS-Paket nicht nur ausgeführt wird, während ich die gespeicherten Prozeduren teste, die innerhalb des Pakets ausgeführt werden.

Danke Leute für irgendwelche Lösungen oder Tipps! Diese Anfrage ist nicht 100% notwendig, aber meine nächtlichen SSIS-Pakete werden massiv und ich muss mit der Feinabstimmung der "quietschenden Räder" beginnen, die ich in der Vergangenheit ignorieren konnte.

    
RLH 01.07.2011, 13:49
quelle

3 Antworten

14

Vielleicht suchen Sie WAITFOR DELAY

    
ypercubeᵀᴹ 01.07.2011, 13:55
quelle
8

Sie würden die Anweisung WAITFOR DELAY

verwenden     
gbn 01.07.2011 13:56
quelle
7

Wählen Sie Getdate () - Warten Sie 10 Sekunden, um einen weiteren Befehl auszuführen.

WAITFOR DELAY '00: 00: 10'; - Accept Wert hh: mm: ss

Wählen Sie GetDate ()

    
Yogesh Bhadauirya 06.07.2011 13:25
quelle