संग्रहीत कार्यविधि ट्रैकिंग ट्रैकिंग


19

SQL Server Profiler का उपयोग करने के अलावा, क्या कोई तरीका है जो संग्रहीत प्रक्रियाओं का उपयोग किया जा रहा है, या कम से कम जब वे आखिरी बार निष्पादित किए गए थे, तो क्या इसका कोई तरीका है?


4
आप हमेशा प्लान कैश पर देख सकते हैं। SQL सर्वर इस सामान को हमेशा के लिए ट्रैक नहीं करता है क्योंकि मेटाडेटा जल्दी से बड़ा और महंगा हो जाता है।
JNK

जवाबों:


17

आप स्टोर किए गए प्रक्रिया उपयोग का एक बहुत अच्छा विचार प्राप्त करने के लिए योजना कैश में देख सकते हैं। उदाहरण के लिए, यह प्रश्न लें:

select
    db_name(st.dbid) as database_name,
    object_name(st.objectid) as name,
    p.size_in_bytes / 1024 as size_in_kb,
    p.usecounts,
    st.text
from sys.dm_exec_cached_plans p
cross apply sys.dm_exec_sql_text(p.plan_handle) st
where p.objtype = 'proc'
and st.dbid = db_id('SomeDatabase')
order by p.usecounts desc

यह आपको usecountsसंग्रहीत प्रक्रियाओं का संग्रह देगा जो कि कैश से संबंधित हैं SomeDB

नोट: प्लान कैश में निष्पादन योजनाएं होती हैं। इन योजनाओं के इस अवधारण में कई कारक शामिल हैं। जबकि इससे आपको यह पता चल जाएगा कि क्या उपयोग किया जा रहा है और कितनी बार, यह निश्चित रूप से चल रही कुल प्रक्रियाओं का नहीं है और कितनी बार / जब उन्हें निष्पादित किया गया।

BOL योजना के बारे में संदर्भ


4
यह केवल आपको बताता है कि सपा को हाल ही में चलाया गया है और आपको यहाँ नहीं प्रॉक्स के बारे में कोई जानकारी नहीं है। त्रैमासिक रिपोर्टों के पीछे procs जैसी चीजें बेमतलब चलती हैं, लेकिन इसका उपयोग किया जा रहा है। तो मूल रूप से, यह आपको उन अनुप्रयोगों में शोध करने के लिए एक सूची देता है जो आपके डीबी को हिट करते हैं।
HLGEM

1
@HLGEM ठीक है। मैंने अपने उत्तर में उस बिंदु को स्पष्ट करने की कोशिश की है।
थॉमस स्ट्रिंगर

क्या विशिष्ट डेटाइम रेंज के लिए ऐसा करना संभव है? (जैसे पिछले दिन / महीने, आदि)?
जोस पारा

ध्यान दें कि यह क्वेरी संग्रहीत प्रक्रिया के लिए एक पंक्ति नहीं लौटेगी जिसे बदल दिया गया है और उसके बाद निष्पादित नहीं किया गया है।
एक्सल

10

आप इसे देख सकते हैं और साथ ही इसमें last_execution_timeहर संग्रहीत प्रक्रिया की जानकारी शामिल है ।

    SELECT DB_NAME(database_id)
    ,OBJECT_NAME(object_id,database_id)
    ,cached_time
    ,last_execution_time
    ,execution_count
FROM sys.dm_exec_procedure_stats

इस थो पर कैविएट है। ये आँकड़े केवल अंतिम डेटाबेस निष्पादन के बाद से रखे गए हैं। मैं एक नौकरी लिखने में व्यस्त हूं जो इसे दिन में एक बार एक मेज पर संग्रहीत करेगा।
Earthling42

@ earthling42, क्या आपने कभी एक नौकरी लिखी है जो इसे दैनिक रूप से एक तालिका में संग्रहीत करती है?
एलेक्स चुंग 14

@ एलेक्स चुंग - दुर्भाग्य से उस के आसपास कभी नहीं मिला। इस पोस्ट की तारीख के तुरंत बाद गैर-एमएस-एसक्यूएल परियोजनाओं पर ले जाया गया। नहीं होना चाहिए कठिन? यदि आप रुचि रखते हैं तो मैं इसे आपके साथ काम करने की कोशिश करने में प्रसन्न हूं।
Earthling42
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.