Lekérdezések futásának nyomonkövetése

7 évvel ezelőtt írtam egy cikket már erről, hogyan lehet állapot információt kliens oldalon kiiratni. Ami miatt ismét előjött, hogy ma is próbálkoztam egy nagy batch futtatásakor, de a PRINT parancsot használtam. Sajnos ennek van egy pici szépséghibája: akkor jeleníti meg, adja vissza a szöveget, amikor az adott batch/lekérdezés lefutott. Például:

PRINT 'valami';
WAITFOR DELAY '00:00:05';
PRINT 'valami';

Ez az első PRINT utasításnál sem írja ki, megvárja, míg a batch befejeződik. Nem túl jó. Kicsit változtatok.

PRINT 'valami';
GO
WAITFOR DELAY '00:00:05';
PRINT 'valami';
WAITFOR DELAY '00:00:05';
PRINT 'valami';

Itt a GO elválasztó miatt az első PRINT kiírásra kerül, a másik kettő csak 10 másodperc után. Helyette inkább a RAISERROR lenne a jó, ha egy batch-en belül akarom követni, hogy hol tart a kód. Pl.:

RAISERROR('valami', 10,1) WITH NOWAIT
WAITFOR DELAY '00:00:05';
RAISERROR('valami', 10,1) WITH NOWAIT
WAITFOR DELAY '00:00:05';

Ebben az esetben az első kiírás rögtön megtörténik, majd a második 5 másodperc után, nem a végén. Fontos, hogy kell a WITH NOWAIT.

Add comment