2009-08-17 10 views
18

Tengo una consulta simple que realiza un bucle y deseo ver los mensajes de IMPRESIÓN durante la ejecución. La consulta es algo como esto:T-SQL Mensaje de salida Durante la ejecución en SSMS

WHILE 1 = 1 
BEGIN 
    WAITFOR DELAY '000:00:10' 
    PRINT 'here' 
END 

la letra 'aquí' no emitirá hasta que deje el proceso, sin embargo, yo quiero verlo mientras que su ejecución. es posible?

Respuesta

17

Puede utilizar RAISERROR con serverity 0 y la opción NOWAIT

WHILE 1 = 1 
BEGIN 
    WAITFOR DELAY '000:00:10' 
    RAISERROR ('here', 0, 1) WITH NOWAIT 
END 
+1

Tenga en cuenta que este doesn' t trabajo después de los primeros 500 mensajes; ¡Una vez que imprime más de lo que está, de repente comienza a almacenar en búfer! – GendoIkari

1

Prueba esto ..

DECLARE @i INT = 1 

WHILE (@i <= 10) 

BEGIN 

--- do something 

SELECT 'Completed ' + CAST(@i AS VARCHAR(50)) + ' : ' + CAST(GETDATE() AS VARCHAR(50)); 

SET @i = @i + 1 

END 
+0

esto funciona para mí – ambrul

+0

¿Podría formatear su código de acuerdo con las reglas de rebaja, por favor? –

Cuestiones relacionadas