2009-08-17 14 views
18

में निष्पादन के दौरान मेरे पास एक साधारण क्वेरी है जो लूप और मैं निष्पादन के दौरान प्रिंट संदेश देखना चाहता हूं। क्वेरी कुछ इस तरह है:टी-एसक्यूएल आउटपुट संदेश एसएसएमएस

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

प्रिंट 'यहाँ' उत्पादन जब तक मैं प्रक्रिया बंद नहीं करता है, लेकिन, मैं अपनी चल रहा है, जबकि यह देखना चाहते हैं। क्या यह संभव है?

उत्तर

13

मेरा मानना ​​है कि प्रिंटों को बफर किया जाता है, बफर भरने के रूप में "भाग" जारी करते हैं। RAISERROR

कोशिश का उपयोग कर:

How do I flush the PRINT buffer in TSQL?

17

आप serverity 0 और प्रतीक्षा नहीं विकल्प

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

ध्यान दें कि यह नहीं करता है ' पहले 500 संदेशों के बाद काम नहीं करते; एक बार जब आप उससे अधिक प्रिंट करते हैं तो अचानक अचानक बफरिंग शुरू हो जाती है! – GendoIkari

1

साथ RAISERROR उपयोग कर सकते हैं इस प्रयास करें ..

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

यह मेरे लिए काम करता है – ambrul

+0

क्या आप अपना कोड मार्कडाउन नियमों के अनुसार प्रारूपित कर सकते हैं? –

संबंधित मुद्दे