डेटाबेस पर हाल ही में निष्पादित सभी प्रश्नों को खोजें


21

[मैं शुरुआती स्तर का टी-एसक्यूएल प्रोग्रामर
हूं ] [और उम्मीद है कि मैं सही स्टैक एक्सचेंज साइट पर हूं]

मैं उन सभी प्रश्नों की सूची प्राप्त करना चाहूंगा, जिन्हें मैंने निष्पादित किया था (कम से कम, जिन्हें मैंने आज सुबह से निष्पादित किया था)। मुझे प्रश्नों के निष्पादन समय पर एक रिपोर्ट बनाने की आवश्यकता है।

ऑनलाइन खोज ने मुझे बहुत उपयोगी जानकारी नहीं दी। एकमात्र क्वेरी जो मुझे ऑनलाइन मिली थी, जो बहुत करीब लग रहा था

SELECT
    deqs.last_execution_time AS [Time], 
    dest.TEXT AS [Query]
 FROM 
    sys.dm_exec_query_stats AS deqs
    CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
ORDER BY 
    deqs.last_execution_time DESC

इस क्वेरी ने कुछ अजीब परिणाम लौटाए (जिनमें से अधिकांश स्प्रोक्स का एक गुच्छा थे)। इसके अलावा, ये सभी परिणाम आज दोपहर के बाद से निष्पादित प्रश्नों को दिखाते हैं (मुझे सुबह से प्रश्नों की आवश्यकता है)।

मुझे पिछले प्रश्नों में कुछ नहीं मिला (यदि इसी तरह का प्रश्न पहले ही पूछा जा चुका है, तो कृपया मुझे इसके बारे में बताएं)।

मैंने SQL Profiler के बारे में कुछ सुझाव देखे, लेकिन मुझे लगता है कि प्रोफाइलर मुझे केवल तभी मदद करेगा जब मैंने पहले ही ट्रेस शुरू कर दिया हो (यदि मैं गलत हूं तो मुझे सही करें)।

क्या कोई मुझे सुझाव दे सकता है कि मुझे सुबह से डेटाबेस पर निष्पादित सभी प्रश्नों की सूची कैसे प्राप्त करनी चाहिए (क्वेरी निष्पादन सहित)।

[यह मददगार होगा (आवश्यकता नहीं) अगर मैं किसी तरह से उस उपयोगकर्ता का उपयोगकर्ता नाम भी प्राप्त कर सकता हूं जिसने क्वेरी निष्पादित की है]

जवाबों:


12

इस क्वेरी ने कुछ अजीब परिणाम लौटाए (जिनमें से अधिकांश स्प्रोक्स का एक गुच्छा थे)। इसके अलावा, ये सभी परिणाम आज दोपहर के बाद से निष्पादित प्रश्नों को दिखाते हैं (मुझे सुबह से प्रश्नों की आवश्यकता है)।

ऐसा इसलिए है क्योंकि आप प्रक्रिया कैश में देख रहे हैं, और सुबह के लिए उपयोग की जाने वाली योजनाएं अब वहां नहीं रह सकती हैं (स्मृति दबाव, सर्वर / आवृत्ति पुनरारंभ होने के कारण, मैन्युअल रूप से खरीद कैश को साफ़ करना, आदि)।

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

यदि आप इस सुबह और केवल सुबह के निष्पादन के आंकड़ों की तलाश कर रहे हैं (यानी एक सक्रिय और टू-डू-नेक्स्ट टाइम कार्य के रूप में उपरोक्त निगरानी कार्यान्वयन की स्थापना पर्याप्त नहीं है), तो जब तक कि पहले से ही बनाया गया था, तब तक कोई नहीं होगा जिस तरह से मूल रूप से यह जानकारी प्राप्त करने के लिए।

भविष्य के संदर्भ के लिए, SQL कैप्चर करने वाले SQL ट्रेस के साथ शुरू करें : StmtCompleted event। XE में यह sql_statement_completedघटना होगी।

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


क्या मैं SQL द्वारा फ़िल्टर कर सकता हूँ: StmtCompleted Data Columns?
किनिकेत
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.