2010-02-02 8 views
13

मेरे पास डेटाबेस बैकअप है जिसके लिए SQL सर्वर प्रबंधन स्टूडियो का कहना है कि इसमें तीन फाइलें हैं: .mdf फ़ाइल, .ndf फ़ाइल और एक .ldf फ़ाइल। यह माध्यमिक डेटा फ़ाइल (.ndf एक) किसी स्पष्ट कारण के लिए बनाई गई थी, इसलिए मैं इसे पूरी तरह से हटा देना चाहता हूं (डेटा खोने के बिना), अधिमानतः जब डेटाबेस बैकअप से बहाल किया जा रहा है।एसक्यूएल सर्वर के डेटाबेस माध्यमिक डेटा फ़ाइल को हटाएं (मर्ज करें)

क्या यह सब करने योग्य है?

+0

एनडीएफ का उद्देश्य फ़ाइल आईओ वितरित करना है। यदि आप सर्वर रहते हैं तो एनडीएफ स्कीमा के साथ टिंकर नहीं है। एनडीएफ आपको परेशान क्यों करता है? –

+3

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

उत्तर

14

ठीक है, एक समाधान मिला।

पहले डेटाबेस का बैक अप लें।

इस निष्पादित करें:

USE database_name; 

फिर इस पर अमल, और अपने एनडीएफ फ़ाइल के तार्किक नाम के साथ logical_ndf_file_name की जगह (जो आप आसानी से database- के माध्यम से पता कर सकते हैं> Properties_Files):

DBCC SHRINKFILE('logical_ndf_file_name', EMPTYFILE); 
ALTER DATABASE database_name REMOVE FILE logical_ndf_file_name; 
+0

आपकी फाइल में डेटा था? और यदि ऐसा है तो यह कितना समय लगा, और डीबी लाइव था? –

+0

@ हसन एनडीएफ लगभग 8 जीबी था, जबकि एमडीएफ लगभग 60 जीबी था। इसमें लगभग 20 मिनट लग गए। "लाइव" से आपका क्या मतलब है इसके बारे में निश्चित नहीं है। मैंने इसे ऑफ़लाइन नहीं लिया, लेकिन इसके खिलाफ कोई प्रश्न नहीं चला। –

+0

दिलचस्प जानकारी। लाइव द्वारा मेरा मतलब उत्पादन उपयोग या ग्राहक का सामना करना पड़ा। –

0

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

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