2010-05-07 9 views
5

मरम्मत और कॉम्पैक्ट ऑपरेशंस .MDB पर क्या करते हैं?मरम्मत और कॉम्पैक्ट ऑपरेशंस क्या करते हैं .एमडीबी? क्या वे एक एप्लिकेशन को दुर्घटनाग्रस्त कर देंगे?

यदि ये ऑपरेशन 1 जीबी + .MDB समर्थित वीबी अनुप्रयोग क्रैशिंग को नहीं रोकते हैं, तो अन्य विकल्प क्या हैं?

एक बड़े आकार का .MDB फ़ाइल क्यों क्रैश करने का कारण बनती है?

उत्तर

7

संकुचित में आपकी मदद कर सकते हैं "क्या कॉम्पैक्ट और मरम्मत कार्यों के एक एमडीबी के लिए क्या करते हो?"

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

तो, यह क्या करता है?

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

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

एक कॉम्पैक्ट अच्छी तरह से व्यवस्थित करता है और सभी ढीले स्थान से छुटकारा पाता है। यह प्राथमिक कुंजी ऑर्डर (पीके पर जेट/एसीई क्लस्टर) में डेटा टेबल को फिर से लिखता है, लेकिन यह एकमात्र इंडेक्स है जिसे आप क्लस्टर कर सकते हैं)। इंडेक्स को उस बिंदु पर भी लिखा जाता है, क्योंकि समय के साथ वे उपयोग के साथ खंडित हो जाते हैं।

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

उस त्रुटि को ठीक करने के लिए, temp तालिकाओं को एक अलग स्टैंडअलोन एमडीबी/एसीसीडीबी पर ले जाएं ताकि मंथन आपकी मुख्य डेटा फ़ाइल को ब्लोट नहीं कर सके।

इस संदर्भ में लागू होने वाले किसी अन्य नोट पर, सामने उन हिस्सों में प्रकृति की वजह से अलग-अलग तरीकों से ब्लाउड समाप्त होता है। चूंकि यह प्रश्न वीबी से उपयोग किए गए एमडीबी/एसीसीडीबी के बारे में है, इसलिए मैं विवरण में नहीं जाऊंगा, लेकिन यह कहने के लिए पर्याप्त है कि सामने के अंत में कॉम्पैक्ट करना कुछ ऐसा है जो विकास के दौरान आवश्यक है, लेकिन उत्पादन के उपयोग में केवल कुछ ही ही नहीं है। उत्पादन फ्रंट एंड को कॉम्पैक्ट करने का एकमात्र कारण मेटाडेटा अपडेट करना और इसमें संग्रहीत क्वेरी को पुन: संकलित करना है।

+0

डेटा स्ट्रॉइंग कर रहे थे और यदि आप SQL सर्वर बैकएंड का उपयोग करते हैं, तो यह चरण केवल समय की पूरी बर्बादी है? –

+0

हां, यदि बैक एंड पर SQL सर्वर का उपयोग किया जाता है, तो कॉम्पैक्ट ऑपरेशन पर आपके डेटाबेस के बारे में कुछ भी नहीं होगा। –

1

यह हमेशा रहा है कि एमडीबी फाइलें धीमी हो जाती हैं और भ्रष्टाचार के लिए प्रवण होती हैं क्योंकि उन्हें 1 जीबी से अधिक मिलता है, लेकिन मुझे कभी पता नहीं चला कि यह हमेशा जीवन का एक तथ्य क्यों रहा है। मैंने कुछ त्वरित खोज की, मुझे कोई आधिकारिक, या यहां तक ​​कि अच्छी तरह से सूचित अंदरूनी सूत्र नहीं मिल रहा है, इस आकार का एमडीबी समस्याओं के साथ सहसंबंध क्यों है, लेकिन मेरा अनुभव हमेशा यह रहा है कि एमडीबी फाइलें अविश्वसनीय रूप से अविश्वसनीय हो जाती हैं जब आप 1 जीबी तक पहुंचते हैं और उससे अधिक होते हैं ।

http://support.microsoft.com/kb/209769/EN-US/

एप्लिकेशन शायद अनुचित/अप्रत्याशित डेटा के परिणाम के रूप दुर्घटनाओं एक एमडीबी के लिए एक डेटाबेस क्वेरी से लौटे:

यहाँ एमएस KB मरम्मत और कॉम्पैक्ट के बारे में लेख, का ब्यौरा क्या है कि ऑपरेशन के दौरान होता है वह बड़ा - जब आपका एप्लिकेशन दुर्घटनाग्रस्त हो जाता है तो आपको विशेष रूप से क्या त्रुटि मिलती है? शायद त्रुटि को पकड़ने और एप्लिकेशन को दुर्घटनाग्रस्त करने के बजाय इसके साथ सौदा करने का एक तरीका है।

+0

मैंने कभी भी 1 जीबी से अधिक एमडीबी/एसीसीडीबी फ़ाइल नहीं देखी है, इसलिए यह नहीं कह सकता कि क्या वे बड़ी मात्रा में डेटा के लिए रैखिक रूप से अपेक्षित अपेक्षा से धीमे हो जाते हैं। मेरा कोई भी ऐप जो डेटा की मात्रा तक पहुंच रहा था, किसी भी घटना में SQL सर्वर को अपनाने के लिए तेज़ ट्रैक पर होगा। किसी चीज के लिए 1 जीबी बैक एंड ब्लूट करना और 2 जीबी की सीमा को हिट करना बहुत आसान है और फिर आप बस बंद हो गए हैं। –

1

यदि यह बहुत दुर्घटनाग्रस्त हो रहा है तो आप डीबी पर एक डिकंपाइल और/या एक नया डेटाबेस बनाना और सभी ऑब्जेक्ट्स को नए कंटेनर पर कॉपी करना चाहते हैं।

पहले विघटित प्रयास करें, यह सिर्फ उदाहरण

के लिए अपने डीबी की स्टार्टअप विकल्प के लिए/विघटित फ्लैग जोड़ने करने के लिए "C: \ Program Files \ पहुँच \ access.mdb" "C: \ mydb। mdb "/ विघटित

फिर कॉम्पैक्ट, संकलन और उसके बाद फिर से कॉम्पैक्ट

संपादित करें:

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

support.microsoft.com/kb/273956

+0

क्या मैं इसे एक्सेस किए बिना कर सकता हूं? एमडीबी का उपयोग वीबी ऐप के बैक एंड के रूप में किया जा रहा है। – CJ7

+0

कुछ अतिरिक्त जानकारी के लिए मेरा संपादन देखें –

+0

डिकंपाइल डेटाबेस के लिए अप्रासंगिक है जिसमें इसमें केवल डेटा टेबल हैं। सवाल यह कहता है कि इसका उपयोग वीबी से किया जा रहा है, जिससे यह क्रिस्टल स्पष्ट हो जाता है कि अपघटन पूरी तरह से गैर-ऑपरेटिव है। यह कुछ भी चोट नहीं पहुंचाएगा, लेकिन यह किसी भी चीज की मदद नहीं करेगा। –

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