क्या मुझे वास्तव में .LDF फाइलें रखने की जरूरत है?


9

हर महीने हम अपने उत्पादन डेटाबेस के महीने के स्नैपशॉट का अंत करते हैं। ये महीने के अंत के स्नैपशॉट रिपोर्टिंग उद्देश्यों के लिए कड़ाई से हैं, उन पर कभी कोई आवेषण, अद्यतन या हटाए नहीं गए हैं। इनमें से प्रत्येक स्नैपशॉट में एक .MDFऔर .LDFफ़ाइल है।

मैं .LDFफ़ाइलों को हटाना चाहता हूं और सर्वर पर कुछ स्थान खाली करना चाहता हूं । क्या कोई कारण है कि मुझे .LDFफाइलें रखने की आवश्यकता क्यों है ?

स्पष्टीकरण:

हमारे उत्पादन डेटाबेस को हर रात एक और सिस्टम के फ़ाइल अर्क से फिर से बनाया जाता है। हम केवल उत्पादन डेटाबेस से रिपोर्ट करते हैं ... कोई अपडेट कभी नहीं किया जाता है।

रात्रिकालीन प्रक्रिया:
मैं जो बता सकता हूं उससे ...
प्रत्येक रात डेटा टेबल को काट दिया जाता है
। टेबल को बड़ी संख्या में सम्मिलित किए गए विवरणों के माध्यम से आबाद
किया जाता है।

जवाबों:


16

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

अंतरिक्ष का उपभोग करें, और अपनी लॉग फ़ाइलों को न हटाएँ । आप उससे परेशानी पूछ रहे हैं।

इस लेख को लेन-देन लॉग पर देखें , विशेष रूप से "लॉग मिसमैनेजमेंट" भाग।


9

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

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO

आप डेटाबेस को वापस बदल सकते हैं READ_WRITE, किसी भी परिवर्तन की आवश्यकता कर सकते हैं, फिर उसे READ_ONLYकिसी भी समय सेट कर सकते हैं, जिसकी आपको आवश्यकता है।

डेटाबेस के ACID गुणों को बनाए रखने के लिए लॉग फ़ाइल की आवश्यकता अभी भी है।


2

तथ्य यह है कि आप केवल mdf फ़ाइल का उपयोग करके एक डेटाबेस बना सकते हैं। यह sp_attach_single_file_db (Transact-SQL) कमांड है। ध्यान दें कि इसे Microsoft SQL सर्वर के भविष्य के संस्करण में हटा दिया जाएगा। लेकिन, अपनी LDF फ़ाइलों को हटाना स्मार्ट नहीं है। शार्क सही है 'आप उससे परेशानी पूछ रहे हैं।' एक और नज़रिया - क्या आपकी ldf फाइलें बड़ी हैं? यदि वे हैं, तो आप उनके बारे में कुछ कर सकते हैं।

  1. अपने डेटाबेस को सिंपल रिकवरी मॉडल पर सेट करें । आप यह तभी कर सकते हैं जब आप लेन-देन वापस नहीं करना चाहते हैं
  2. एमडीएफ और एलडीएफ फाइलें बनाने के बजाय, एक पूर्ण डेटाबेस बैकअप (.BAK) फ़ाइल बनाएं। यह छोटा टैन एमडीएफ + एलडीएफ होगा

-3

यहाँ एलडीएफ फ़ाइलों को सिकोड़ने के लिए मैं आया समाधान है।

  1. डेटाबेस को अलग करें
  2. LDF फ़ाइल को * _old.ldf नाम दें
  3. डेटाबेस संलग्न करें
  4. लापता LDF के लिए संदर्भ निकालें

यह एक LDF फ़ाइल को फिर से बनाता है जो आकार में 504K है।

  1. हटाएं * _old.ldf
  2. खाली रीसायकल बिन

इसने सर्वर पर डिस्क स्थान की एक महत्वपूर्ण मात्रा को पुनः प्राप्त किया है। यह हमारे लिए काम करता है क्योंकि ये सभी डेटाबेस केवल स्टेटिक रिपोर्टिंग डेटाबेस हैं। इन डेटाबेस के खिलाफ कभी कोई इंसर्ट, अपडेट या डिलीट नहीं किया जाएगा।

अद्यतन 2019-09-24: हाँ, मैं मानता हूँ कि यह वास्तव में बुरा विचार है। मैंने लगभग तुरंत ऐसा करना बंद कर दिया। मैं 100 के एक भरने कारक का उपयोग कर सभी अनुक्रमित पुनर्निर्माण किया है। केवल .ldf फ़ाइलों को सिकोड़ें। और सभी डेटाबेसों को केवल READ होने के लिए बदल दिया।


6
वाह, यह एक बहुत बुरा विचार है। क्या होगा अगर डेटाबेस सफलतापूर्वक अलग नहीं होता है, या 1 या 3 के बीच कहीं खो जाता है या भ्रष्ट हो जाता है? तुम तो गए। आपके पास अपने डेटाबेस की शून्य प्रतियां हैं।
हारून बर्ट्रेंड

3
ऐसा करने का उचित तरीका होगा: 1. डेटाबेस का एक COPY_ONLY बैकअप लें। 2. रिपोर्टिंग सर्वर पर इसे पुनर्स्थापित करें। 3. वसूली को सरल पर सेट करें और पुनर्स्थापित प्रतिलिपि को केवल-पढ़ने के लिए चिह्नित करें। 4. लॉग फ़ाइल को मैन्युअल रूप से सिकोड़ें। हां आपको इस बीच में जगह की आवश्यकता है, लेकिन आपको अपनी नौकरी रखने के लिए मिल जाएगा!
हारून बर्ट्रेंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.