कोई हमारे SQL सर्वर डेटाबेस पर दूरस्थ रूप से क्वेरी चला रहा था और उनका सिस्टम क्रैश हो गया था।
उनके पास उस क्वेरी का कोई बैकअप नहीं है और वे देखना चाहते हैं कि सर्वर पर क्या चलाया गया था।
क्या यह क्वेरी लॉग में या इतिहास में कहीं संभव है?
कोई हमारे SQL सर्वर डेटाबेस पर दूरस्थ रूप से क्वेरी चला रहा था और उनका सिस्टम क्रैश हो गया था।
उनके पास उस क्वेरी का कोई बैकअप नहीं है और वे देखना चाहते हैं कि सर्वर पर क्या चलाया गया था।
क्या यह क्वेरी लॉग में या इतिहास में कहीं संभव है?
जवाबों:
इसी तरह की ग्रांट फ्रेटी के पास वह मुद्दा था जहां उन्होंने एसएसएमएस को बंद कर दिया था और जिस क्वेरी पर वह काम कर रहे थे उसे खो दिया था ... यहाँ के बारे में ब्लॉग किया गया: ओह **********!
संपादित करें
इसे उत्तर का थोड़ा और विस्तार करने के लिए, ग्रांट से ऊपर संदर्भित संदर्भित एक क्वेरी प्रदान करता है उदाहरण के लिए कैश पर जाने के लिए आपके द्वारा निष्पादित की गई क्वेरी (या कम से कम प्रयास) को बाहर निकालने के लिए:
SELECT dest.text
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
WHERE deqs.last_execution_time > '5/19/2011 11:00'
AND dest.text LIKE 'WITH%';
कुछ और विकल्प जो ग्रांट के ब्लॉग की टिप्पणियों में नोट किए गए थे:
2005+, बचाव के लिए डिफ़ॉल्ट ट्रेस ।
डिफ़ॉल्ट ट्रेस 20mb पर रोल करता है लेकिन SQL 5 निशान के इतिहास को बरकरार रखता है। सर्वर तक पहुँच के साथ आप MSSQL \ Log निर्देशिका से * .trc फ़ाइलों को पुनः प्राप्त कर सकते हैं। यदि आप सर्वर तक नहीं पहुंच सकते हैं, तो निम्नलिखित आपको वर्तमान डिफ़ॉल्ट ट्रेस फ़ाइल का नाम देगा:
SELECT * FROM ::fn_trace_getinfo(default)
यदि वर्तमान फ़ाइल उदाहरण के लिए E: \ MSSQL.1 \ MSSQL \ Log \ log_200.trc है, तो पिछली फाइलें log_199.trc, log_198.trc आदि होनी चाहिए। इनके साथ ट्रेस की सामग्री प्राप्त करें:
SELECT * FROM fn_trace_gettable('E:\MSSQL.1\MSSQL\LOG\log_199.trc', default)
आप कैश्ड क्वेरी योजनाओं से जानकारी प्राप्त करने में सक्षम हो सकते हैं, sysinos_exec_query_stats पर जानकारी के लिए BOL की जाँच कर सकते हैं, या इसे उसी डेटाबेस से जुड़े प्रबंधन स्टूडियो से चला सकते हैं:
SELECT d.plan_handle ,
d.sql_handle ,
e.text
FROM sys.dm_exec_query_stats d
CROSS APPLY sys.dm_exec_sql_text(d.plan_handle) AS e
के साथ आउटपुट फ़िल्टर करें
WHERE text like '%something%'
परिणामों को कम करने के लिए।
यदि डेटाबेस पूर्ण पुनर्प्राप्ति मोड में था, तो कुछ डेटा को पुनर्प्राप्त करने और लेनदेन लॉग पढ़ने के द्वारा जो किया गया था उस पर अंतर्दृष्टि प्राप्त करने का मौका हो सकता है।
दुर्भाग्य से यह डिफ़ॉल्ट रूप से समर्थित नहीं है, लेकिन ऐसा करने के तरीके हैं।
आप ApexSQL लॉग या SQL लॉग रेस्क्यू (केवल मुफ्त लेकिन SQL 2000) जैसे तीसरे पक्ष के टूल का उपयोग करने का प्रयास कर सकते हैं ।
एक अन्य विकल्प यह है कि आप अनजाने कार्यों का उपयोग करने की कोशिश करें DBCC LOG या fn_dblog। यह अधिक जटिल है लेकिन इसकी स्वतंत्र है।
यदि आपका डेटाबेस पूर्ण पुनर्प्राप्ति मॉडल पर सेट है, तो आप अपने लेन-देन लॉग बैकअप की जांच कर सकते हैं। fn_dump_dblog
अधिक informations के लिए देखें ।
ApexSQL में एक ' एक्ज़ीक्यूटेड क्वेश्चन ' फंक्शनालिटी है जो आपको डेट तक सर्च और फ़िल्टर करने की सुविधा देती है।
मुझे यकीन नहीं है कि यह एसएसएमएस कैश से इतिहास को खींचता है या वास्तव में इसे खुद से ट्रैक करता है। आप इसे स्थापित करने की कोशिश कर सकते हैं और सर्वश्रेष्ठ के लिए आशा कर सकते हैं।