2009-09-21 18 views
8

मैं, अंत में त्रुटि फिर हुआ एसक्यूएल प्रोफाइलर का उपयोग कर (SQL 2008)क्या एसक्यूएल प्रोफाइलर ट्रेस फ़िल्टर करने का कोई तरीका है?

उत्पादन में ट्रेस चल कुछ दिनों के बाद this problem निवारण करने के लिए कोशिश कर रहा हूँ, और अब मैं कारण का पता लगाने की कोशिश कर रहा हूँ। समस्या यह है कि ट्रेस में 400k पंक्तियां हैं, जिनमें से 99.9% "रिपोर्ट सर्वर" से आ रही हैं, जिन्हें मैं यह भी नहीं जानता कि यह क्यों चल रहा है, लेकिन ऐसा लगता है कि यह हर सेकेंड SQL सर्वर को पिंग कर रहा है ...

क्या बाकी हिस्सों को देखने में सक्षम होने के लिए, निशान से कुछ रिकॉर्ड फ़िल्टर करने का कोई तरीका है?
क्या मैं इसे वर्तमान .trc फ़ाइल के साथ कर सकता हूं, या मुझे फिर से ट्रेस चलाने की आवश्यकता होगी?
क्या अन्य अनुप्रयोग हैं .trc फ़ाइल को देखने के लिए जो मुझे यह कार्यक्षमता दे सकता है?

उत्तर

18

आप SQL सर्वर प्रोफाइलर में एक कैप्चर ट्रेस लोड कर सकते हैं: Viewing and Analyzing Traces with SQL Server Profiler

या आप वर्कलोड विश्लेषण करने के लिए ClearTrace (फ्री संस्करण) जैसे टूल में लोड कर सकते हैं।

तुम इतनी तरह, एक एसक्यूएल सर्वर तालिका में लोड कर सकते हैं:

SELECT 
    COUNT(*) AS TotalExecutions,  
    EventClass, 
    CAST(TextData as nvarchar(2000)) , 
    SUM(Duration) AS DurationTotal , 
    SUM(CPU) AS CPUTotal , 
    SUM(Reads) AS ReadsTotal , 
    SUM(Writes) AS WritesTotal 
FROM 
    TraceTable 
GROUP BY 
    EventClass, 
    CAST(TextData as nvarchar(2000)) 
ORDER BY 
    ReadsTotal DESC 

यह भी देखें::

SELECT * INTO TraceTable 
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default) 

तो फिर तुम इसी प्रकार के डेटा को समेकित करने के लिए एक प्रश्न चला सकते हैं MS SQL Server 2008 - How Can I Log and Find the Most Expensive Queries?

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

+0

हे मिच आपको इस तरह के कार्यों को कहां मिला। क्या आप मुझे इस और इसी तरह के कार्यों के लिए स्रोत सुझा सकते हैं? –

+0

उपरोक्त पहले लिंक, ब्लॉग और किताबों सहित विभिन्न स्रोत। SQL सर्वर एमवीपी के कई ब्लॉग में उपयोगी जानकारी है। –

3

स्थानीय स्तर पर .trc लोड करें और फिर स्थानीय डेटाबेस में डेटाबेस पर सहेजें और फिर अपने दिल की सामग्री से पूछें।

3

ये सुझाव मौजूदा ट्रेस के लिए बहुत अच्छे हैं - यदि आप ट्रेस को फ़िल्टर करना चाहते हैं, आप इसे शुरू करने से पहले ट्रेस पर इवेंट फ़िल्टर सेट अप कर सकते हैं।

मेरे अनुभव में सबसे उपयोगी फिल्टर आवेदन नाम है - यह आप यह सुनिश्चित करने के लिए हर कनेक्शन अपने डेटाबेस से कनेक्ट करने के लिए इस्तेमाल स्ट्रिंग यह में एक उपयुक्त ऐप्लिकेशन का नाम मूल्य, अर्थात् है कि है ऐसा करने के लिए:

".. .Server = MYDB1 एकीकृत प्रमाणीकरण = SSPI; आवेदन नाम = MyPortal, ... "

एक नया पता लगाने के लिए पता लगाने के गुणों में

फिर, घटनाक्रम चयन टैब का चयन करें, उसके बाद स्तंभ फ़िल्टर ...

एप्लिकेशन नाम फ़िल्टर का चयन करें, और केवल आपके द्वारा संकेतित कनेक्शन, यानी उपयोग करने के लिए मूल्यों को जोड़ने के लिए मूल्य जोड़ें LIKE फ़ील्ड में MyPortal केवल उस कनेक्शन के लिए ईवेंट शामिल करेगा जिसमें उस एप्लिकेशन का नाम होगा।

यह आपको रिपोर्टिंग सेवाओं को उत्पन्न करने वाली सभी क्रूड एकत्र करने से रोक देगा, उदाहरण के लिए, और बाद में विश्लेषण को बहुत तेज बना देगा।

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

0

यहाँ आप घटनाओं की पूरी सूची के साथ डिफ़ॉल्ट ट्रेस क्वेरी करने के लिए एक पूरी स्क्रिप्ट पा सकते हैं आप फ़िल्टर कर सकते हैं:

http://zaboilab.com/sql-server-toolbox/anayze-sql-default-trace-to-investigate-instance-events


आप sys.fn_trace_gettable क्वेरी करने के लिए है (@ TraceFileName, डिफ़ॉल्ट) घटनाओं को डीकोड करने के लिए sys.trace_events में शामिल होना।

2

SQL सर्वर 2005 के बाद से, आप सीधे SQL प्रोफाइलर से .trc फ़ाइल सामग्री फ़िल्टर कर सकते हैं; इसे SQL तालिका में आयात किए बिना। बस प्रक्रिया यहाँ का सुझाव दिया पालन करें:

http://msdn.microsoft.com/en-us/library/ms189247(v=sql.90).aspx

एक अतिरिक्त संकेत: क्या एक फिल्टर वाइल्डकार्ड के रूप में '%' का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप एसआरवी जैसे HOSTNAME द्वारा फ़िल्टर करना चाहते हैं, तो आप एसआरवी% का उपयोग कर सकते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे