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:

1PRINT 'valami';
2WAITFOR DELAY '00:00:05';
3PRINT '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.

1PRINT 'valami';
2GO
3WAITFOR DELAY '00:00:05';
4PRINT 'valami';
5WAITFOR DELAY '00:00:05';
6PRINT '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.:

1RAISERROR('valami', 10,1) WITH NOWAIT
2WAITFOR DELAY '00:00:05';
3RAISERROR('valami', 10,1) WITH NOWAIT
4WAITFOR 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.