2011-07-01 13 views
8

Założę się, że to, co zamierzam zadać, zwykle wchodzi w zakres "złej praktyki", ale chcę zapytać, niezależnie od tego, czy ta funkcja jest przydatna do diagnozowania problemów i testowania długoterminowych skryptów.Czy istnieje sposób na zatrzymanie lub oczekiwanie na kilka chwil z poziomu skryptu?

W skrócie, czy istnieje funkcja wbudowana w SQL Server, którą mógłbym nazwać, która pozwoliłaby mi na "wstrzymanie" na krótki okres czasu?

Mam nocny proces SSIS, który po eksportowaniu danych generuje różne podzbiory danych statystycznych. Ilekroć mam problemy z czasem wykonania pakietu SSIS, mam serię diagnostycznych procedur przechowywanych, które mogę nazwać, które pomagają zdiagnozować, przy której ładowaniu eksport/bulk zajmuje wyjątkowo dużo czasu, aby wykonać.

Podczas drugiej połowy mojego procesu SSIS, w którym generuję dane statystyczne, byłoby naprawdę korzystne, gdybym mógł przeanalizować, gdzie proces może zachodzić, lub przeanalizować, jak szybko może modyfikować dane w moich tabelach danych. Większość procedur statycznych rozpoczyna się od wstawienia danych do tabeli, która jest przełączana przez pętle WHILE i aktualizowana, gdy spełnione są niezbędne warunki.

Mogę łatwo zapytać moje dane, aby przechwycić konkretny wskaźnik podczas wykonywania moich statystycznych procedur składowanych. Chciałbym pobrać te dane, odczekać dokładnie 1 sekundę (lub pewną określoną ilość czasu) i ponownie pobrać metrykę, aby móc je porównać.

Dzięki wprowadzeniu "pauzy" mogę tworzyć bardziej rozbudowane skrypty diagnostyczne, które pozwalają określić, ile wstawek, aktualizacji lub obliczeń rozpoczyna się na sekundę, i które mogą oszacować, które części moich większych procedur zabierają najwięcej czasu .

Założę się, że mogą istnieć pewne narzędzia diagnostyczne, których mógłbym użyć z poziomu SQL Server Management Studio. Przyznaję, że nie majstrowałem przy tym. Jednak zazwyczaj, jeśli istnieje narzędzie w SSMS, wiele funkcjonalności zaplecza może być naśladowana przez pewną formę fantazyjnych skryptów. Innym możliwym ograniczeniem do korzystania z jakiejkolwiek wbudowanej diagnostyki jest to, że wolałbym uruchomić te dane, podczas gdy pakiet SSIS działa nie tylko podczas testowania procedur przechowywanych, które są wykonywane w pakiecie.

Dzięki chłopaki za wszelkie rozwiązania lub wskazówki! Ta prośba nie jest w 100% potrzebna, ale moje nocne pakiety SSIS stają się masywne i muszę zacząć dostrajać "squeeky wheels", które mogłem zignorować w przeszłości.

+2

Co o wdrażaniu podejścia tabeli rejestrowania, gdzie długie procedury eksploatacji wstawiania znaczników czasu i informacji o stanie w osobnej tabeli w trakcie realizacji? Dobrze skonstruowany ślad w ten sposób da ci możliwość określenia danych, które Cię interesują, czyż nie? –

Odpowiedz

8

Można by użyć instrukcji WAITFOR DELAY

+0

Tego właśnie szukam. Próbowałem google na tego typu rzeczy (szczerze!), Ale nie mogłem go znaleźć. Dziękuję Ci. – RLH

7

Wybierz GetDate() - odczekać 10 sekund, aby uruchomić inną komendę

waitfor DELAY "00: 00: 10"; hh Wartość --accept: mm: ss

Wybierz GetDate()

Powiązane problemy