क्या मैं SQL Server डेटाबेस पर ऐतिहासिक क्वेरीज़ को चला सकता हूँ?


38

कोई हमारे SQL सर्वर डेटाबेस पर दूरस्थ रूप से क्वेरी चला रहा था और उनका सिस्टम क्रैश हो गया था।

उनके पास उस क्वेरी का कोई बैकअप नहीं है और वे देखना चाहते हैं कि सर्वर पर क्या चलाया गया था।

क्या यह क्वेरी लॉग में या इतिहास में कहीं संभव है?


एक लॉग में नहीं। एक TFS या SourceSafe संस्करण नियंत्रण प्रणाली में जाँच की गई? परिणाम एक txt पर सेट किया जाता है ताकि इसे फिर से बनाया जा सके?
jl01

2
भविष्य के डिजाइन के लिए आप ट्रिगर्स और ऑडिट / हिस्ट्री टेबल को जोड़ने पर विचार कर सकते हैं। फिर अंतिम अद्यतन समय / उपयोगकर्ता का उपयोग करने में सक्षम होगा।
थॉमस स्ट्रिंगर

जवाबों:


39

इसी तरह की ग्रांट फ्रेटी के पास वह मुद्दा था जहां उन्होंने एसएसएमएस को बंद कर दिया था और जिस क्वेरी पर वह काम कर रहे थे उसे खो दिया था ... यहाँ के बारे में ब्लॉग किया गया: ओह **********!

संपादित करें

इसे उत्तर का थोड़ा और विस्तार करने के लिए, ग्रांट से ऊपर संदर्भित संदर्भित एक क्वेरी प्रदान करता है उदाहरण के लिए कैश पर जाने के लिए आपके द्वारा निष्पादित की गई क्वेरी (या कम से कम प्रयास) को बाहर निकालने के लिए:

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%';

कुछ और विकल्प जो ग्रांट के ब्लॉग की टिप्पणियों में नोट किए गए थे:


1
यह एक अच्छा लेख है! धन्यवाद! और अनुदान के लेख के बाद, SQL सर्वर प्रबंधन स्टूडियो में बैक-अप क्वेरी फ़ाइलों को पुनर्प्राप्त करने में मदद मिल सकती है।
मैरियन

यह उत्तर आयात किया जा सकता है अगर यह कहा जाता है कि यह किस संस्करण पर काम करता है। जब मैं इसे चलाने का प्रयास करता हूं तो मुझे यह त्रुटि मिलती है: 'के पास गलत सिंटैक्स।' 2008 को।
माइकल पॉटर

आयात किया जा सकता है? @MichaelPotter कॉपी और ब्राउज़र और अन्य उपकरणों के बीच पेस्ट आमतौर पर उद्धरण चिह्नों और अन्य पाठ को बदल देगा, मेरा उस हिस्से पर कोई नियंत्रण नहीं है।
शॉन मेल्टन

क्षमा करें, कृपया मेरा प्रश्न सही करें ... s / आयातित / सुधार /
माइकल पॉटर

16

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)

13

आप कैश्ड क्वेरी योजनाओं से जानकारी प्राप्त करने में सक्षम हो सकते हैं, 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%'

परिणामों को कम करने के लिए।


9

यदि डेटाबेस पूर्ण पुनर्प्राप्ति मोड में था, तो कुछ डेटा को पुनर्प्राप्त करने और लेनदेन लॉग पढ़ने के द्वारा जो किया गया था उस पर अंतर्दृष्टि प्राप्त करने का मौका हो सकता है।

दुर्भाग्य से यह डिफ़ॉल्ट रूप से समर्थित नहीं है, लेकिन ऐसा करने के तरीके हैं।

आप ApexSQL लॉग या SQL लॉग रेस्क्यू (केवल मुफ्त लेकिन SQL 2000) जैसे तीसरे पक्ष के टूल का उपयोग करने का प्रयास कर सकते हैं ।

एक अन्य विकल्प यह है कि आप अनजाने कार्यों का उपयोग करने की कोशिश करें DBCC LOG या fn_dblog। यह अधिक जटिल है लेकिन इसकी स्वतंत्र है।


0

यदि आपका डेटाबेस पूर्ण पुनर्प्राप्ति मॉडल पर सेट है, तो आप अपने लेन-देन लॉग बैकअप की जांच कर सकते हैं। fn_dump_dblogअधिक informations के लिए देखें ।


0

ApexSQL में एक ' एक्ज़ीक्यूटेड क्वेश्चन ' फंक्शनालिटी है जो आपको डेट तक सर्च और फ़िल्टर करने की सुविधा देती है।

मुझे यकीन नहीं है कि यह एसएसएमएस कैश से इतिहास को खींचता है या वास्तव में इसे खुद से ट्रैक करता है। आप इसे स्थापित करने की कोशिश कर सकते हैं और सर्वश्रेष्ठ के लिए आशा कर सकते हैं।


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