2012-04-12 8 views
19

निम्न संग्रहीत प्रक्रिया पर विचार करें ..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 

मान लें कि प्रत्येक नष्ट बयान एक लंबे समय नष्ट करने के लिए लेते हैं, लेकिन मैं इस संग्रहीत प्रक्रिया की प्रगति देखना पसंद है जब मैं एसक्यूएल प्रबंधन स्टूडियो में यह चल रहा हूँ । दूसरे शब्दों में, मैं प्रिंटर स्टेटमेंट का आउटपुट देखना चाहता हूं यह देखने के लिए कि मैं किसी भी समय कहां हूं। हालांकि, ऐसा लगता है कि मैं केवल पूरे रन के अंत में प्रिंट आउटपुट देख सकता हूं। क्या इसे बनाने का कोई तरीका है ताकि मैं वास्तविक समय पर प्रिंट आउटपुट देख सकूं? यदि नहीं, तो क्या कोई अन्य तरीका है कि मैं चल रहे संग्रहीत प्रक्रिया की प्रगति देख सकता हूं?

उत्तर

31

आप 10 या उससे कम की गंभीरता के साथ RAISERROR उपयोग करें, और NOWAIT विकल्प का उपयोग करते हैं, यह एक सूचनात्मक संदेश ग्राहक को तुरंत भेज देंगे:

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

+0

धन्यवाद का उपयोग, यह सिर्फ मैं क्या जरूरत है! :) –

6

हाँ आप प्राप्त करने में सक्षम होना चाहिए तुरंत मुद्रित करने के लिए संदेश अगर आप RAISERROR:

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

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