डिफ़ॉल्ट ट्रेस सक्षम है लेकिन सक्रिय नहीं है


9

जब मैं डिफ़ॉल्ट ट्रेस के कॉन्फ़िगरेशन को क्वेरी करता हूं, तो यह सक्षम दिखाता है:

exec sp_configure 'default trace enabled';
-->
name                    minimum  maximum  config_value  run_value
default trace enabled         0        1             1          1

लेकिन जब मैं sys.tracesरास्ते के लिए क्वेरी करता हूं , तो यह एक खाली रोसेट देता है:

select * from sys.traces;

सक्षम ट्रेस की अनुपस्थिति को क्या समझा सकता है?


@AaronBertrand: select * from sys.tracesएक खाली
रोसेट

इसके अलावा, मैंने ऐसे मामलों के बारे में सुना है जहां ट्रेस मर जाता है क्योंकि यह जिस ड्राइव को भरने के लिए लिख रहा था (और यह जरूरी नहीं कि SQL सर्वर को तब तक प्रभावित करेगा जब तक कि कोई ध्यान देने योग्य / सहसंबंधी तरीके से)।
हारून बर्ट्रेंड

@AaronBertrand: व्यवस्थापक का कहना है कि ड्राइव ने कुछ दिन पहले हामी भर दी थी। SQL सर्वर सेवा का पुनरारंभ भी डिफ़ॉल्ट ट्रेस को पुनरारंभ करेगा?
एंडोमर

रोका जा रहा ट्रेस मेरा पहला था, लेकिन फिर भी EXEC sp_trace_setstatus @traceid = 1, @status = 0वापस लाया गया The default trace cannot be stopped or modified.ताकि यह सुनिश्चित न हो सके कि इसे तब तक रोका जा सकता है जब तक कि कोई त्रुटि न हो जो इसे चलने से रोकता है। त्रुटि लॉग में कुछ भी?
मार्टिन स्मिथ

@Martin यह सही है, आप डिफ़ॉल्ट ट्रेस को मैन्युअल रूप से रोक नहीं सकते।
हारून बर्ट्रेंड

जवाबों:


13

मैं कहूंगा कि आपके अंतरिक्ष कार्यक्रम और लापता निशान के बीच एक मजबूत संबंध है। ध्यान दें कि sp_configureविकल्प केवल आपको बताता है कि डिफ़ॉल्ट ट्रेस सक्षम है, लेकिन इसका मतलब यह नहीं है कि यह चल रहा है या यह भी मौजूद है। ध्यान दें कि sys.tracesएक तालिका नहीं है, लेकिन एक दृश्य है:

create view sys.traces as select * from OpenRowset(TABLE SYSTRACES)

TABLE SYSTRACESरोसेट क्या प्रदान करता है ? यह कैसे काम करता है? इसके परिणाम कैसे फ़िल्टर किए जाते हैं? तुम्हारा अंदाज़ा मेरी तरह सटीक है। यह संभव है कि ट्रेस अभी भी है, लेकिन एक राज्य में जो इसे इस दृष्टिकोण से उजागर होने से रोकता है। और यह उस स्थिति में हो सकता है जो अभी भी सेवा को पुनरारंभ करने के बाद भी शुरू होने से रोकता है।

सबसे पहले, सुनिश्चित करें कि डिफ़ॉल्ट ट्रेस के स्थान में पर्याप्त स्थान है, SQL सर्वर सेवा खाते में अभी भी इसे लिखने के लिए पर्याप्त अनुमति है, आप किसी भी स्थान कोटा आदि के अधीन नहीं हैं, आप रजिस्ट्री से स्थान प्राप्त कर सकते हैं:

HKEY_LOCAL_MACHINE\Software\Microsoft\...YourInstance...\Setup\SQLDataRoot\

एक बार जब आप सुनिश्चित हो जाते हैं कि SQL सर्वर को इस फ़ोल्डर में लिखने में सक्षम होना चाहिए, तो आप डिफ़ॉल्ट ट्रेस को अक्षम और फिर से सक्षम कर सकते हैं:

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 0;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'default trace enabled', 1;
GO
RECONFIGURE WITH OVERRIDE;

आपको इस बिंदु पर SQL सर्वर सेवा को पुनरारंभ करने की आवश्यकता नहीं है, लेकिन यदि आप अभी भी एक पंक्ति नहीं देखते हैं, तो SQL सर्वर के पैंट में एक अंतिम किक हो सकती है sys.traces। ध्यान दें कि trace_idआपको 1 पर रहने की गारंटी नहीं है।


धन्यवाद, अक्षम और पुनः सक्षम काम किया। मैंने उपयोग नहीं किया with override। त्रुटि लॉग वास्तव में एक आउट-ऑफ-स्पेस ईवेंट दिखाती है।
एंडोमर जूल

1
@Andomar माफ करना, with overrideआदत है।
हारून बर्ट्रेंड

1

ड्राइव भरने के बाद मेरे पास एक ही मुद्दा था। डिफ़ॉल्ट ट्रेस सक्षम था, लेकिन नहीं चल रहा था। इसे अक्षम करना और सेवाओं को बिना रुके तुरंत इसे फिर से सक्षम करना।

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