2011-10-14 10 views
19

मेरे पास 10 संग्रहीत प्रक्रियाएं निम्नानुसार हैं: एसपी 1, एसपी 2, ....., एसपी 10 ये संग्रहीत प्रक्रियाएं कुछ सामान करती हैं। मुझे इन प्रक्रियाओं को निम्नानुसार चलाने की आवश्यकता है: EXCUTE SP1; निष्पादित एसपी 2; ... EXECUTE SP10;एसक्यूएल सर्वर में संग्रहित प्रक्रिया निष्पादन समय कैसे ढूंढें?

जब SQL सर्वर इन प्रक्रियाओं के निष्पादन को पूरा करने के लिए finshes, यह दस लाइनों को इन सभी संग्रहीत प्रक्रियाओं के कारण किसी भी पंक्ति परिवर्तन दिखाता है। मैं क्या करना चाहता हूं कि सभी संग्रहीत प्रक्रियाओं के निष्पादन के बाद SQL सर्वर आउटपुट विंडो में प्रत्येक संग्रहीत प्रक्रियाओं के लिए निष्पादन समय भी देता है। क्या मैं यह कर सकता हूं? मुझे यकीन है कि इस कार्य को प्राप्त करने के लिए मुझे संग्रहीत प्रक्रियाओं को संशोधित करने की आवश्यकता है, लेकिन मुझे नहीं पता कि यह कैसे करें ... कृपया मेरी मदद करें। धन्यवाद।

+1

आप कर रहे हैं संग्रहीत प्रक्रिया को अपने कस्टम लिखित ऐप से कॉल करना? यदि हां, तो कौन सी भाषा? – Koekiebox

उत्तर

13

आप इस प्रयोजनों के लिए Sql Server Profiler का उपयोग कर सकते हैं, यह प्रत्येक निष्पादित के साथ बहुत उपयोगी जानकारी प्रदान करता है क्वेरी और संग्रहीत प्रक्रिया भी।

  1. घोषित 2 datetime चर: शुरू/अंत
  2. सेट शुरू

    MSDN: SQL Profiler Data Columns

    एसक्यूएल प्रोफाइलर प्रत्येक घटना

    एक अन्य सरल तरीके के लिए निष्पादन समय प्रदर्शित करता है = GETDATE()

  3. EXEC SP_NAME
  4. सेट अंत = GETDATE()
  5. निष्पादन समय - समाप्ति और
0

capture and display execution time

उपयोग दो datetime प्रकार और एक सेट संग्रहीत प्रक्रिया

में tsql की शुरुआत से पहले getdate() का उपयोग कर और दूसरे tsql के बाद getdate() का उपयोग कर और अंत में datediff फ़ंक्शन का उपयोग अंतर पाने के लिए सेट के पैरामीटर

20

शुरू प्रबंधन स्टूडियो या एक निर्गम फलक आप कर सकते हैं के साथ कुछ अन्य पर्यावरण मान लिया जाये कि बीच का अंतर;

SET STATISTICS TIME ON 
EXEC SP1 
EXEC SP2 
... 
SET STATISTICS TIME OFF 
3

ऐसे Sql सर्वर प्रोफाइलर के रूप में तरीकों इस उपकरण का उपयोग कर ऐसा करने के लिए कर रहे हैं, लेकिन एक सरल तरीका समय मुद्रित करने के लिए एक लाइन के साथ घिरा प्रत्येक proc को चलाने के लिए है:

print convert(varchar, getdate(), 21) 
EXEC PROC SP1 
print convert(varchar, getdate(), 21) 
+0

आप वर्कर में क्यों परिवर्तित होंगे ??? मूल रूप से आपको क्या करना चाहिए –

+0

प्रक्रिया को चलाने से पहले और बाद में मिलीसेकंद अंतर लेना है ताकि आप एक प्रारूपित आउटपुट प्राप्त कर सकें जैसे '2011-10-14 12: 32: 39.403'।डेटाटाइम के रूप में इसे छोड़कर आपको आवश्यक रूप से मिलीसेकंड नहीं देंगे, और _only_ की रिपोर्टिंग अंतर ** ** के अतिरिक्त डेटा को खो देता है, जब यह चलाया जाता है, यदि यह अनुपयुक्त है। – Widor

+0

धन्यवाद ... लगभग हर तरीके काम किया !!! – Azeem

4
declare @start datetime = getdate() 

-- your SQL statements 
exec dbo.MyStoredProcedure 

declare @executionTimeInMilliseconds int = datediff(ms, @start, getdate()) 
संबंधित मुद्दे