2009-06-15 15 views
54

ओरेकल में SQL कमांड हैं जो कोई जारी कर सकता है ताकि लेनदेन लॉग न हो। क्या SQL सर्वर 2008 के लिए कुछ समान है?लेनदेन लॉग अक्षम करें

मेरे परिदृश्य: हम सर्वर (देव, गुणवत्ता आश्वासन, प्रॉड) पर टीएक्स लॉग जरूरत है, लेकिन शायद हम डेवलपर मशीनों पर उनके बिना कर सकते हैं।

+1

क्या आपने अपने गणना किए गए डेटा के लिए विचारों का उपयोग करने का प्रयास किया है? –

+0

अपने प्रश्न को हाइजैक करने के लिए खेद है, लेकिन कण प्रक्रिया/क्वेरी के लिए ऑरैकल में लेनदेन लॉगिंग को अक्षम कैसे करें? धन्यवाद! – Victor

+2

@ कौशिक आप इसे अपने स्वयं के प्रश्न के रूप में पूछने से बेहतर हैं। –

उत्तर

91

आप किसी भी परिस्थिति में SQL सर्वर में लेनदेन लॉग के बिना नहीं कर सकते हैं। इंजन बस काम नहीं करेगा।

आप अपने देव मशीनों पर सरल करने के लिए अपने वसूली मॉडल सेट कर सकते हैं - कि लेनदेन लॉग सूजन पाएगा जब ट्रॅन लॉग बैकअप नहीं किया जाता है।

ALTER DATABASE MyDB SET RECOVERY SIMPLE; 
+13

बस एक बड़ा सिर ऊपर: यह उत्तर 100% तकनीकी रूप से सही है। लेकिन यह केवल कुछ ऐसा है जो आप अपने डेवलपर मशीनों पर उपयोग करना चाहते हैं या जब आप अपने डेटा का बैकअप लेने में सक्षम नहीं हैं। अधिक जानकारी और पृष्ठभूमि के लिए http://www.sqlservervideos.com/video/logging-essentials/ और http://www.sqlservervideos.com/video/shrinking-log-files/ देखें। –

39

एसक्यूएल सर्वर को कार्य करने के लिए एक लेनदेन लॉग की आवश्यकता है।

कहा कि लेन-देन लॉग के लिए आपरेशन के दो तरीके हैं:

  • सरल
  • पूर्ण

पूर्ण मोड में लेन-देन लॉग डेटाबेस को वापस आप तक बढ़ रही रखता है । में सरल मोड: लेनदेन लॉग में स्थान '0 रीसाइक्लिंग' हर चेकपॉइंट है।

बहुत कम लोगों को पूर्ण वसूली मॉडल में अपने डेटाबेस चलाने की आवश्यकता है। पूर्ण मॉडल का उपयोग करने का एकमात्र बिंदु यह है कि यदि आप प्रति दिन कई बार डेटाबेस बैकअप करना चाहते हैं, और पूरे डेटाबेस का बैक अप लेना बहुत लंबा लगता है - तो आप केवल लेनदेन लॉग का बैकअप लेते हैं।

लेनदेन लॉग पूरे दिन बढ़ता रहता है, और आप इसे केवल समर्थन देते रहते हैं। उस रात आप अपना पूरा बैकअप लेते हैं, और एसक्यूएल सर्वर लेनदेन लॉग ट्रांजेट लॉग करता है, लेनदेन लॉग फ़ाइल में आवंटित स्थान का पुन: उपयोग करना शुरू कर देता है।

यदि आप केवल पूर्ण डेटाबेस बैकअप करते हैं, तो आप पूर्ण पुनर्प्राप्ति मोड नहीं चाहते हैं।

+0

यह थोड़ा गलत है: आपको लेनदेन लॉग बढ़ने से रोकने के लिए * लॉग * (उम्मीद है) बैकअप लेना होगा। बेशक, यदि आपके पास एक खुला लेनदेन या एक बड़ा लेनदेन है, तो लॉग बढ़ेगा क्योंकि आंतरिक लॉग फ़ाइल आवंटन (वीएलएफ) का पुन: उपयोग नहीं किया जा सकता है या आपको और आवश्यकता है। यह एक त्वरित अवलोकन बीटीडब्ल्यू है, अध्याय और पद – gbn

+1

@gbn आप लॉग को बैकअप से रोकने के लिए लॉग बैकअप नहीं करते हैं। मेरा मतलब है कि आप * * करते हैं, लेकिन यह सुविधा का * बिंदु * नहीं है। माइक्रोसॉफ्ट ने गेम खेलने के लिए एक लेनदेन लॉग नहीं बनाया * * अपनी पूरी हार्ड ड्राइव का उपभोग करें क्योंकि आप लॉग बैकअप करना भूल गए हैं "*। * कारण * लॉग बढ़ता रहता है (और उसके बाद इसे बढ़ने से रोकने के लिए बैक अप की आवश्यकता होती है), ताकि आप बैकअप * बस * लॉग कर सकें। –

1

टीएक्स लॉग के साथ आपकी समस्या क्या है? वो बढ़ते हैं? फिर चेकपॉइंट विकल्प पर बस कटाई सेट करें।

माइक्रोसॉफ्ट प्रलेखन से:

एसक्यूएल सर्वर 2000 में या SQL सर्वर 2005 में, "सरल" वसूली मॉडल " चौकी पर लॉग काटना" एसक्यूएल सर्वर के पुराने संस्करणों में के बराबर है। लेन-देन लॉग हर बार एक चौकी सर्वर पर प्रदर्शन किया है छोटा कर दिया है, तो यह डेटाबेस वसूली के लिए लॉग का उपयोग करने से रोक देता है। आप अपने डेटा को पुनर्स्थापित करने के लिए केवल पूर्ण डेटाबेस बैकअप का उपयोग कर सकते हैं। लेनदेन लॉग का बैकअप अक्षम है जब "सरल" पुनर्प्राप्ति मॉडल का उपयोग किया जाता है।

+1

खैर, अंतरिक्ष समस्याएं - कुछ देवों की पुरानी मशीनें हैं और हम बिना कर सकते हैं। अधिक बिंदु पर, अगर यह संभव है तो मैं उत्सुक हूं! मैं इस धारणा के तहत था कि "ट्रंकेट लॉग ऑन चेकपॉइंट" विकल्प केवल SQL 2008 में सरल पुनर्प्राप्ति मोड का उपयोग करके सेट किया गया था। क्या कोई और तरीका है? –

+1

@ टापोरी, वे वही बात हैं। उन्होंने इसे 2000 में बदल दिया। – zvolkov

34

उपरोक्त वर्णित तीसरा वसूली मोड नहीं है।वसूली मोड अंततः निर्धारित करता है कि एलडीएफ फाइलें कितनी बड़ी हो जाती हैं और उन्हें किस प्रकार लिखा जाता है। ऐसे मामलों में जहां आप किसी भी प्रकार के थोक आवेषण करने जा रहे हैं, आपको डीबी को "बल्क/लॉग इन" में सेट करना चाहिए। इससे थोक आवेषण तेजी से बढ़ते हैं और फ्लाई पर बदला जा सकता है।

ऐसा करने के लिए,

USE master ; 
ALTER DATABASE model SET RECOVERY BULK_LOGGED ; 

इसे वापस बदलने के लिए: के बारे में क्यों किसी एक एलडीएफ नहीं चाहेंगे कि बातचीत को जोड़ने की भावना में

USE master ; 
ALTER DATABASE model SET RECOVERY FULL ; 

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

+1

इसके लिए धन्यवाद। हम डीबी का बिल्कुल उसी तरह उपयोग करते हैं। हम वापस रोल करने में सक्षम होने के बारे में कम परवाह नहीं कर सका।शुद्ध प्रदर्शन हम – Dan

+0

के बाद हैं, इस परिदृश्य के लिए आप मोंगो (लॉग अक्षम करने की अनुमति देता है) या मेमोरी (रेडिस और अन्य) में एक अलग डेटाबेस पर विचार कर सकते हैं। – Tim

0

यदि यह केवल अंतरिक्ष बचाने के लिए देव मशीनों के लिए है तो बस सरल वसूली मोड के साथ जाएं और आप ठीक काम करेंगे।

उत्पादन मशीनों पर हालांकि मैं दृढ़ता से अनुशंसा करता हूं कि आप डेटाबेस को पूर्ण पुनर्प्राप्ति मोड में रखें। यह सुनिश्चित करेगा कि यदि आवश्यक हो तो आप समय वसूली में बिंदु कर सकते हैं।

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

How can I rollback an UPDATE query in SQL server 2005?

Read the log file (*.LDF) in sql server 2008

तो अंतरिक्ष उत्पादन मशीनों पर एक मुद्दा तो बस लगातार लेनदेन लॉग बैकअप पैदा करते हैं।

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