SQL Server 2008 R2 में लंबे समय से चल रहे क्वेरी या गतिरोध पर अधिसूचना?


15

मैं जानना चाहूंगा कि क्या गतिरोध पर अधिसूचना भेजने का कोई तरीका है? यदि हां, तो किन प्रश्नों की आवश्यकता होगी। मैं समझता हूं कि SQL सर्वर गतिरोधों का ध्यान रखता है, मैं बस इसमें शामिल प्रश्नों पर जानकारी चाहूंगा।

मैंने लंबे समय तक चलने वाले प्रश्नों को निर्धारित करने के लिए निम्नलिखित पाया:

SELECT 
    creation_time
    ,last_execution_time
    ,total_physical_reads
    ,total_logical_reads
    ,total_logical_writes
    , execution_count
    , total_worker_time
    , total_elapsed_time
    , total_elapsed_time / execution_count avg_elapsed_time
    ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
    ((CASE statement_end_offset
        WHEN -1 THEN DATALENGTH(st.text)
        ELSE qs.statement_end_offset END
    - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st  
where total_elapsed_time >= 300000000 --5 min
ORDER BY total_elapsed_time / execution_count DESC; 

मैं जानना चाहूंगा कि क्या ऊपर जाने का सही तरीका है, या क्या यह निर्धारित करने का एक बेहतर तरीका है कि किसी विशिष्ट अंतराल को दिखाए गए 5 मिनट के अंतराल से अधिक समय लगता है?

धन्यवाद

जवाबों:


8

SQL 2008 के साथ एक नई सुविधा है जिसे आप गतिरोध और लंबे समय तक चलने वाली कतार के लिए उपयोग कर सकते हैं: विस्तारित इवेंट । विस्तारित ईवेंट निम्न स्तर की वस्तुएं हैं और प्रोफाइलिंग / ट्रेसिंग, अलर्ट आदि जैसे अन्य तरीकों की तुलना में बहुत कम संसाधनों का उपभोग करते हैं ...

एक SQL सर्वर MVP जोनाथन Kehayias द्वाराdeadlocks इस पोस्ट की जाँच के साथ विस्तारित घटनाओं का उपयोग करने के लिए ।

खोजने के लिए विस्तारित घटनाओं का उपयोग करने के लिए , एक अन्य SQL सर्वर MVP Pinal डेव द्वाराlong running queries इस विस्तृत पोस्ट को देखें


10

आप SQL एजेंट के साथ इन दोनों के लिए अलर्ट कॉन्फ़िगर कर सकते हैं। एक नया अलर्ट बनाएँ और "SQL सर्वर प्रदर्शन स्थिति चेतावनी" चुनें

लंबे समय तक चलने वाले प्रश्नों के लिए, ऑब्जेक्ट "MSSQL $ InstanceName: Transactions" और काउंटर: सबसे लंबे समय तक चलने वाले लेन-देन का समय चुनें। मानों और अलर्ट अधिसूचना विकल्पों को कॉन्फ़िगर करें, और आप जाने के लिए अच्छे हैं।

गतिरोधों के लिए, वस्तु "MSSQL $ InstanceName: Locks" है और काउंटर "डेडलॉक / संख्या की संख्या" है

यदि आप गतिरोध सूचना का अधिक सूक्ष्म नियंत्रण चाहते हैं, तो इसे देखें : http://www.sqlservercentral.com/articles/Administration/3243/


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

4

यदि आप SQL2008 है तो मैं @StanleyJohns सुझाव का समर्थन करूंगा। विस्तारित कार्यक्रम एक नैदानिक ​​उपकरण के रूप में खुद को परिचित करने के लायक हैं और जोनाथन की एन एक्सवेंट एक डे श्रृंखला शुरू करने के लिए एक शानदार जगह है।

डेडलॉक के लिए एक विकल्प है ट्रेस झंडे 1204 और 1222 को सक्षम करना , जो डेडलॉक जानकारी को SQL त्रुटि लॉग में डंप करता है। दोनों को सक्षम करें, इसलिए आपको दो अलग-अलग स्वरूपों में जानकारी मिलती है, जिससे जटिल गतिरोध श्रृंखलाओं को समझना आसान हो सकता है।

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