SQL सर्वर में नए ट्रेस फ़्लैग खोजने के तरीके


38

वहाँ बहुत सारे ट्रेस फ्लैग हैं। कुछ अच्छी तरह से प्रलेखित हैं, कुछ नहीं हैं, और दूसरों ने 2016 की रिलीज में डिफ़ॉल्ट व्यवहार की स्थिति के लिए अपना रास्ता ढूंढ लिया। आधिकारिक सहायता चैनलों, Microsoft कर्मचारियों, आदि के अलावा, नए ट्रेस झंडे खोजने के तरीके क्या हैं?

मैं यहाँ और यहाँ हारून बर्ट्रेंड द्वारा हाल ही के कुछ पदों के माध्यम से पढ़ा है , लेकिन नए ट्रेस झंडे के बारे में कुछ भी नहीं देखा।

मैंने mssqlsystemresource की डेटा और लॉग फ़ाइल को एक नए स्थान पर कॉपी किया, और इसे सिस्टम तालिकाओं और दृश्यों के माध्यम से प्रहार करने के लिए एक नियमित डेटाबेस की तरह संलग्न किया, लेकिन तुरंत कुछ भी हाजिर नहीं किया। मैंने ज्ञात ट्रेस फ्लैग्स की एक सूची लेने पर विचार किया, और संख्याओं के माध्यम से लूपिंग उस सूची में नहीं था, यह देखने के लिए कि कौन से DBCC TRACEON अनुमति देगा, लेकिन पहले यहां प्रश्न पूछना चाहता था।

यह मानते हुए कि उन्हें सक्षम करने के लिए DBCC कमांड को यह सुनिश्चित करने के लिए कुछ संसाधन के साथ जांचना होगा कि ट्रेस ध्वज वैध है, यह कहां तक ​​पहुंचता है? क्या एक .dll या कुछ अन्य सिस्टम फ़ाइल है जो एक सूची रखती है?

मुझे पता है कि प्रश्न एक विस्तृत जाल का उपयोग करता है, लेकिन यह जो कुछ था, वह 2016 में एक नई सुविधा के साथ विशिष्ट उद्देश्य व्यवहार के साथ ट्रेस फ्लैग के बारे में पढ़ रहा था जो वर्णित प्रभाव नहीं डाल रहा था। मेरा आरंभिक विचार यह था कि शायद संख्याओं को किसी तरह से ट्रांसप्लांट किया गया था, जैसे 7129 7219 बन रहा है। मैं एक श्रेणी के भीतर वैध ट्रेस झंडे की एक सूची प्राप्त करने की उम्मीद कर रहा था, 7000-7999 कहते हैं, क्रमपरिवर्तन के लिए। उन सभी का परीक्षण करना, दोनों के रूप में DBCC TRACEON झंडे और स्टार्टअप पैरामीटर काफी उपद्रव होगा, जो कि फीचर व्यवहार के खिलाफ परिणामों के परीक्षण के साथ संयुक्त है।

जवाबों:


42

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

जैसा कि हारून ने कहा, आप किसी भी ट्रेस ध्वज संख्या को सक्षम कर सकते हैं, और यदि यह कुछ नहीं करता है, या आप कार्यक्षमता का पता नहीं लगाते हैं जो ट्रेस ध्वज के लिए प्रासंगिक है, तो आप व्यवहार में कोई अंतर नहीं देखेंगे।

DBCC TRACEON कुछ भी चेक नहीं करता है - क्योंकि कोई रन-टाइम सूची नहीं है कि कौन से नंबर वैध हैं या नहीं - यह सिर्फ यह सक्षम करता है कि उस कनेक्शन के लिए / विश्व स्तर पर कौन से झंडे लगाए गए हैं उनके बिटमैप में ट्रेस फ्लैग नंबर।

वैधता जाँच के साथ समस्या यह है कि जो झंडे झंडे वैध हैं, उन्हें उजागर किया जाएगा, जिससे उन्हें खोजा जा सकेगा। इस तरह 'मान्य सूची' प्रभावी रूप से बाधित है, जो कि एसक्यूएल टीम चाहती है।

एसक्यूएल सर्वर में होना चाहिए कि टिप्पणी में परिजनों के सुझाव के बारे में select * from sys.available_trace_flags- हाँ और नहीं। कई ट्रेस झंडे हैं जो प्रदर्शन के लिए हानिकारक हैं और केवल उत्पाद समर्थन से मार्गदर्शन के तहत समस्याओं को डीबग करने के लिए आवश्यक हैं, लेकिन SQL सर्वर 'सुरक्षित' झंडे को सूचीबद्ध कर सकता है।


2
एक छोटी सी बात - DBCC TRACEON वास्तव में कुछ जाँच करता है। यह गिस्ट कोड को दिखाता है जो ट्रेस झंडे के माध्यम से शुरू होता है। 1 पर शुरू होने वाले एसक्यूएल सर्वर के सभी वर्तमान संस्करण टूट जाएंगे और अधिकतम वर्तमान ट्रेस फ्लैग नंबर पर एक त्रुटि फेंक देंगे: gist.github.com/BrentOzar/0e9692da8ceffce2b4bdd064e36d3174
ब्रेंट ओजर

41

नए ट्रेस झंडे खोजने के तरीके क्या हैं?

अधिकांश समय के लिए, यह समय और भावनात्मक संसाधनों को उनकी तलाश में खर्च करने के लिए नीचे आता है।

निश्चित रूप से, संभव ट्रेस फ़्लैग नंबरों के माध्यम से लूप की स्क्रिप्ट लिखना और प्रभावों का विश्लेषण करना संभव है, लेकिन यह हमेशा फलदायी नहीं होता है। उसके कई कारण हैं, लेकिन आम निराशाओं में यह तथ्य शामिल है कि कुछ ट्रेस झंडे केवल दूसरों के साथ संयोजन में प्रभावी हैं, कुछ केवल -Tस्टार्टअप के साथ काम करते हैं , या जब उपयोग किए जाते हैं DBCC TRACEON, तो कुछ के साथ ही OPTION (QUERYTRACEON)। कुछ को अनिर्दिष्ट कमांड, या कमांड एक्सटेंशन, या किसी विशेष सुविधा के लिए भी सक्षम होना चाहिए। कुछ केवल प्रभाव उत्पन्न करते हैं यदि आप जानते हैं कि उन प्रभावों को कहाँ देखना है। और इतने पर और ... बहुत बहुत ... इतने पर।

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

मेरे लिए, कुछ को संभवतः बहुत दिलचस्प होना चाहिए, या मेरे लिए एक बेहतर समाधान के बिना वास्तविक दुनिया की समस्या से संबंधित होना चाहिए, यहां तक ​​कि इसके बारे में सोचने के लिए भी। यह भी उपयोगी है यदि आप इस प्रक्रिया से सैकड़ों या हजारों बार पहले हो चुके हैं, तो आप जिस चीज़ की तलाश कर रहे हैं, उसके लिए एक व्यापक भावना प्राप्त करने के लिए, कौन से ट्रेस झंडे की सीमा प्रभावी होने की संभावना है, और कौन सा हिस्सा कोडबेस दिलचस्प होने जा रहा है।

एक ब्रेकपॉइंट सेट करना CSessionTraceFlags::CheckSessionTraceInternalऔर edxरजिस्टर के मान की जांच करना (यह देखने के लिए कि कौन सा ट्रेस ध्वज चेक किया जा रहा है) सरल मामलों में उपयोगी हो सकता है, लेकिन दिलचस्प मामले अक्सर सरल नहीं होते हैं - और सभी ट्रेस झंडे उस बिंदु पर चेक नहीं किए जाते हैं जहां वे होते हैं लिया गया कोड पथ को प्रभावित करता है।

आधिकारिक ट्रेस झंडे की एक छोटी सूची है । ये वे झंडे हैं जो पूरी तरह से परीक्षण किए गए हैं और (और होंगे) सीएसएस द्वारा समर्थित हैं और अंततः, उत्पाद डेवलपर्स। वे दस्तावेज बनाने के लायक होने के लिए एक सामान्य पर्याप्त उपयोग के मामले में भी झंडे हैं।

आपके द्वारा पाया गया कोई भी अन्य ट्रेस ध्वज एक ऐसी जिज्ञासा है, जिसका विभिन्न स्थितियों (विभिन्न बिल्ड, SKU, सुरक्षा सेटिंग्स, विभिन्न सुविधाओं में अप्रत्याशित प्रभाव हो सकता है ... कुछ और जो आप कर सकते हैं या नहीं सोच सकते हैं)। ये केवल उस व्यक्ति द्वारा 'समर्थित' होंगे, जिन्होंने उनके बारे में लिखा है, यदि वह बिल्कुल भी।

कई अनौपचारिक सूचियाँ हैं, जिनमें से सबसे अच्छी जानकारी मुझे आरोन मोरेली द्वारा SQL सर्वर फ़्लैग का एक सामयिक संग्रह है (वर्तमान में v6, अप्रैल 2016 में)।

सभी ने कहा, Microsoft CSS do (अंततः) सभी ट्रेस झंडे तक पहुंच है, इसलिए वे आपको किसी भी सलाह देने में सक्षम हो सकते हैं, भले ही वे आधिकारिक सूची में न हों। वे निश्चित रूप से कुछ भी नहीं कहने के लिए चुन सकते हैं, और इसमें एक शुल्क शामिल हो सकता है; मैं वास्तव में नहीं जानता, कभी भी उस मार्ग से नहीं गया।


14

हम गितुब (अब 599 ट्रेस झंडे) पर ट्रेस झंडे का एक संग्रह बनाए रखते हैं :

Microsoft SQL सर्वर ट्रेस झंडे

इसके अलावा, ब्रेंट ओज़र द्वारा अपने महान लेख Bad Idea Jeans में बहुत अच्छी तकनीक का वर्णन किया गया है : इस भयानक लेख में अनडॉन्मेंटेड ट्रेस फ्लैग्स और जो ऑब्बिश को खोजना ट्रेस फ्लैग्स को खोजने का एक तरीका

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