2010-03-15 10 views
26

मैं SQL सर्वर प्रबंधन स्टूडियो में नया हूं और सोच रहा हूं: क्या यह देखने का कोई तरीका है कि डेटाबेस के विरुद्ध कौन से प्रश्न चल रहे हैं?मैं SQL सर्वर प्रबंधन स्टूडियो के भीतर निष्पादित क्वेरी कैसे देखूं?

गतिविधि मॉनिटर में, "हालिया महंगी क्वेरी" रिपोर्ट है, लेकिन मुझे लगता है कि यह सभी प्रश्न नहीं है क्योंकि मैं उन लोगों को नहीं देख रहा हूं जिन्हें मैंने चलाया है।

मैं SQL सर्वर एक्सप्रेस 2008 बनाम 10.0.1600.22 चला रहा हूं।

+0

एक अब नष्ट कर दिया जवाब http://blog.sqlauthority.com/2008/01/03/sql -सर्वर-2005-अंतिम-रन-क्वेरी-हाल ही में-रन-क्वेरी /) जो सबसे हालिया SQL क्वेरी दिखाने के लिए एक SQL क्वेरी दिखाता है। –

उत्तर

18

SQL Profiler का उपयोग करें और सबसे महंगा प्रश्न प्राप्त करने के लिए उस पर एक फ़िल्टर का उपयोग करें।

+2

मैं यह उल्लेख करना भूल गया कि यह SQL सर्वर एक्सप्रेस है। अन्य पोस्ट पढ़ने से, ऐसा लगता है कि प्रोफाइल में प्रोफाइलर शामिल नहीं है। क्या यह अभी भी सही है? – bsh152s

+0

हां, यह केवल एंटरप्राइज़, मानक और वर्कग्रुप संस्करणों के साथ शामिल है। आप यहां और अन्य सुविधाओं की तुलना यहां कर सकते हैं: http://www.microsoft.com/sqlserver/2008/en/us/editions-compare.aspx –

10

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

यदि आप एक मुफ्त संस्करण (एसक्यूएल एक्सप्रेस) का उपयोग कर रहे हैं, तो उनके पास फ्रीवेयर प्रोफाइल हैं जिन्हें आप डाउनलोड कर सकते हैं। मैंने अंजलाब के प्रोफाइलर का उपयोग किया है (http://sites.google.com/site/sqlprofiler पर उपलब्ध), और यह अच्छी तरह से काम करने लग रहा था।

15

गतिविधि मॉनिटर का उपयोग करें। यह शीर्ष बार में अंतिम टूलबार है। यह आपको "हालिया महंगी क्वेरी" की एक सूची दिखाएगा। आप निष्पादन योजना, आदि देखने के लिए उन्हें डबल-क्लिक कर सकते हैं।

+4

+1 हमें यह बताने के लिए कि अन्यथा छुपा कार्य कहां है और इसका उपयोग कैसे करें। – cjbarth

3

यदि आप एसएसएमएस को एक क्वेरी इतिहास बनाए रखना चाहते हैं, तो SSMS Tool Pack add on का उपयोग करें।

यदि आप वर्तमान में चल रहे प्रश्नों के लिए SQL सर्वर की निगरानी करना चाहते हैं, तो SQL PRofiler का उपयोग करें जैसा कि पहले से ही सुझाया गया है।

3

प्रबंधन स्टूडियो से निम्न क्वेरी चल रहे एक प्रक्रिया पर चलाएं:

DBCC inputbuffer(spid#) 

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

यह एक विशिष्ट SPID को लक्षित करने के बाद से एक ट्रेस चलाने से बेहतर है। आप देख सकते हैं कि यह अपने सीपीयूटाइम और डिस्कियो के आधार पर लंबे समय तक चल रहा है या नहीं।

उदाहरण SPID 64 का विवरण प्राप्त करने के लिए:

DBCC inputbuffer(64) 
4
 SELECT * FROM sys.dm_exec_sessions es 
    INNER JOIN sys.dm_exec_connections ec 
     ON es.session_id = ec.session_id 
    CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) where es.session_id=65 under see text contain... 
+0

आपको केवल एसएसएल (एसक्यूएल प्रबंधन स्टूडियो) के भीतर चलने वाला एसक्यूएल मिलता है, लेकिन किसी भी डॉटनेट एप्लिकेशन लक्ष्य ado.net में चलने वाले एसक्यूएल को पकड़ नहीं सकता है। केवल एसक्यूएल प्रोफाइलर कर सकते हैं। –

15

आप प्रश्नों कि पहले से ही कर रहे हैं देखना चाहते हैं तो मार डाला वहाँ कोई समर्थित डिफ़ॉल्ट तरीका यह है है। कुछ कामकाज हैं जो आप कोशिश कर सकते हैं लेकिन सभी को खोजने की उम्मीद नहीं है।

आप निश्चित रूप से SELECT स्टेटमेंट देखने में सक्षम नहीं होंगे लेकिन लेनदेन लॉग पढ़कर अन्य डीएमएल और डीडीएल कमांड देखने का एक तरीका है (माना जाता है कि डेटाबेस पूर्ण रिकवरी मोड में है)।

आप बी सी सी लॉग इन करें या fn_dblog आज्ञा या ApexSQL Log की तरह तीसरे पक्ष लॉग रीडर का उपयोग कर

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

3

अधिक स्पष्ट क्वेरी को लक्षित स्टूडियो एसक्यूएल प्रश्नों है: [इस ब्लॉग प्रविष्टि] (करने के लिए अंक नीचे

SELECT text FROM sys.dm_exec_sessions es 
    INNER JOIN sys.dm_exec_connections ec 
     ON es.session_id = ec.session_id 
    CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) 
    where program_name like '%Query' 
+0

आपको एसएसएमएस (एसक्यूएल प्रबंधन स्टूडियो) के भीतर केवल एसक्यूएल चल रहा है, लेकिन यदि आप प्रोग्राम_नाम बदलते हैं तो किसी भी डॉटनेट एप्लिकेशन लक्ष्य ado.net में चल रहे एसक्यूएल को पकड़ नहीं सकते हैं। केवल एसक्यूएल प्रोफाइलर कर सकते हैं। –