2012-04-12 1 views
19

Si consideri il seguente stored procedure ..Come visualizzare l'avanzamento dell'esecuzione di stored procedure SQL?

CREATE PROCEDURE SlowCleanUp (@MaxDate DATETIME) 
AS 
BEGIN 
    PRINT 'Deleting old data Part 1/3...' 
    DELETE FROM HugeTable1 where SaveDate < @MaxDate 

    PRINT 'Deleting old data Part 2/3...' 
    DELETE FROM HugeTable2 where SaveDate < @MaxDate 

    PRINT 'Deleting old data Part 3/3...' 
    DELETE FROM HugeTable3 where SaveDate < @MaxDate 

    PRINT 'Deleting old data COMPLETED.' 
END 

Diciamo che ogni dichiarazione di cancellazione richiedere molto tempo per cancellare, ma mi piace vedere il progresso di questa stored procedure quando sono in esecuzione in SQL Management Studio . In altre parole, mi piace vedere l'output delle istruzioni PRINT per vedere dove sono in un dato momento. Tuttavia, sembra che io possa vedere solo le uscite PRINT alla fine di TUTTA la corsa. C'è un modo per farlo in modo che possa vedere le uscite PRINT in tempo reale? In caso contrario, c'è un altro modo in cui posso vedere lo stato di avanzamento di una stored procedure in esecuzione?

risposta

31

Se si utilizza RAISERROR con una severità di 10 o meno, e utilizza l'opzione NOWAIT, invierà un messaggio informativo per il cliente immediatamente:

RAISERROR ('Deleting old data Part 1/3' , 0, 1) WITH NOWAIT

+0

Grazie, questo è proprio quello che mi serve! :) –

6

Sì, si dovrebbe essere in grado di ottenere il messaggio per stampare immediatamente se si utilizza RAISERROR:

RAISERROR('Hello',10,1) WITH NOWAIT