2009-08-12 4 views
19

संदर्भ: SQL सर्वरनिष्पादन को ट्रैक करने के लिए प्रिंटर स्टेटमेंट का उपयोग कैसे करें क्योंकि संग्रहीत प्रक्रिया चल रही है?

मेरे पास while लूप के साथ एक संग्रहीत प्रक्रिया है और मुझे कुछ 500 लूप के बाद कुछ संदेश मुद्रित करना चाहते हैं।

तो, मैं लिखा है -

CREATE spxxx 
AS 
BEGIN 
    BEGIN TRAN 
     DECLARE @counter = 0; 

     WHILE <somecondition> 
      SET @counter = @counter + 1; 

      IF @counter % 50 = 0 
      BEGIN 
       PRINT @counter; 
      END 
     END 
    COMMIT TRAN 
END -- End spxxx 

लेकिन यह सब संदेशों प्रिंट एक बार proc समाप्त होता है। मैं इसे चलते समय संदेशों को प्रिंट करना चाहता हूं।

+0

क्षमा करें कि एक प्रकार था, मुझे हर 50 लूप संदेश की आवश्यकता है। – Storm

उत्तर

26

मुझे यकीन है कि आप RAISERROR ... WITH NOWAIT

उपयोग कर सकते हैं, तो आप गंभीरता 10 यह एक त्रुटि नहीं है का उपयोग कर रहा हूँ। यह कुछ आसान प्रारूपण प्रदान करता है जैसे% s,% i और आप यह भी ट्रैक करने के लिए राज्य का उपयोग कर सकते हैं कि आप कहां हैं।

+0

HI, धन्यवाद, लेकिन मैंने अभी तक RAISERROR (@msg, 10, 1) को आजमाया है; और यह अभी भी कुछ भी :( – Storm

+2

निम्नलिखित कोड का प्रयास करें मुद्रित नहीं करता है: घोषित @counter INT \t सेट @counter = 0; \t घोषित @msg VARCHAR (4) 1000 < \t @counter जबकि शुरू सेट @counter = @counter + 1; @counter 50% = 0 \t \t शुरू करते हैं \t \t \t सेट @msg = कास्ट (@counter के रूप में VARCHAR (4)) RAISERRO आर (@msg, 10, 0) प्रतीक्षा नहीं \t \t \t WAITFOR देरी 00 'के साथ: 00: 01' \t \t अंत अंत –

+2

nopes। अभी भी काम नहीं कर रहा है ! – Storm

2

एसक्यूएल सर्वर कथन के बैच के बाद संदेशों को वापस कर दिया गया है। आम तौर पर, यदि आप एक बैच के अंत का संकेत करने के एसक्यूएल GO का उपयोग करेंगे और परिणाम लाने के लिए:

PRINT '1' 
GO 

WAITFOR DELAY '00:00:05' 

PRINT '2' 
GO 

WAITFOR DELAY '00:00:05' 

PRINT '3' 
GO 

इस मामले में, हालांकि, प्रिंट बयान आप तुरंत वापस चाहते हैं एक पाश के बीच में है, इसलिए प्रिंट स्टेटमेंट अपने बैच में नहीं हो सकते हैं। एकमात्र कमांड जिसे मैं जानता हूं वह बैच के बीच में वापस आ जाएगा RAISERROR (...) WITH NOWAIT, जो gbn मैंने इसे टाइप करने के उत्तर के रूप में प्रदान किया है।

+0

: यह एसपी के अंदर काम नहीं कर रहा है लेकिन यह क्वेरी विंडो के अंदर स्पष्ट है। क्या यह है ?? – kta

0

क्या मैं इस सुविधा के लिए लंबी अवधि की आवश्यकता के बारे में पूछ सकता हूं - क्या यह डीबगिंग उद्देश्यों के लिए है?

यदि ऐसा है, तो आप एक उचित डीबगर का उपयोग करने पर विचार करना चाहेंगे, जैसे विजुअल स्टूडियो में पाया गया, क्योंकि इससे आपको प्रक्रिया को अधिक नियंत्रित तरीके से आगे बढ़ने की अनुमति मिलती है, और लगातार जोड़ने/निकालने से बचा जाता है प्रक्रिया से प्रिंट स्टेटमेंट।

बस मेरी राय है, लेकिन मैं कोड और डेटाबेस के लिए डीबगर दृष्टिकोण पसंद करता हूं।

+1

कोई लंबी अवधि की आवश्यकता नहीं है, मैं केवल डेटा माइग्रेशन एसपी लिख रहा था और लूप में कुछ परिणाम देखना चाहता था। – Storm

+1

मुझे विभिन्न स्थानों पर समय जोड़कर प्रदर्शन समस्याओं का निदान करने के लिए यह उपयोगी पाया गया। यदि डीबगर का उपयोग करके किया जाता है तो डीबगिंग प्रक्रिया एसपी को मापा जा सकता है। –

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

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