2013-01-24 15 views
11

को कम नहीं करता है मेरे पास 1 टेबल के साथ एक परीक्षण डेटाबेस है जिसमें 50 मिलियन रिकॉर्ड हैं। तालिका में शुरू में 50 कॉलम थे। तालिका में कोई अनुक्रमणिका नहीं है। जब मैं "sp_spaceused" प्रक्रिया निष्पादित करता हूं तो मुझे परिणामस्वरूप "24733.88 एमबी" मिलता है। अब इस डेटाबेस के आकार को कम करने के लिए, मैं 15 कॉलम (ज्यादातर int कॉलम) हटा देता हूं और "sp_spaceused" चलाता हूं, मुझे परिणामस्वरूप "24733.88 एमबी" मिलता है।कॉलम हटाना डेटाबेस आकार

इतने सारे कॉलम हटाने के बाद डेटाबेस आकार क्यों कम नहीं हो रहा है? क्या मुझसे यहां कुछ छूट रहा है?

संपादित करें: मैं सिकुड़ डेटाबेस की कोशिश की है, लेकिन यह मदद नहीं की या तो

उत्तर

19

निम्न आदेश चलाकर का प्रयास करें:

DBCC CLEANTABLE ('dbname', 'yourTable', 0) 

यह होगा टेबल या अनुक्रमित विचारों में गिरा चर लंबाई स्तंभों से मुक्त अंतरिक्ष। अधिक जानकारी यहां DBCC CLEANTABLE और यहां Space used does not get changed after dropping a column

साथ ही, इस उत्तर की पहली टिप्पणी पर पोस्ट किए गए लिंक पर सही ढंग से बताया गया है। डीबीसीसी क्लेनटेबल कमांड को निष्पादित करने के बाद, आपको स्पेस वापस पाने के लिए टेबल के मामले में आपके क्लस्टर्ड इंडेक्स को फिर से भरना होगा।

ALTER INDEX IndexName ON YourTable REBUILD 
+1

मुझे इस लिंक पर एक समान समाधान मिला: http://stackoverflow.com/questions/807579/how-to-reduce-size-of-sql-server-table-that-grew-from-a-datatype-change मैं अब कोशिश कर रहा हूँ! धन्यवाद! – Vinod

+0

@ विनोद, अगर यह उपयोगी था तो उत्तर दिया गया चेकमार्क जांचना न भूलें ताकि अन्य सुनिश्चित हो सकें कि यह सही उत्तर था। – Yaroslav

+0

ठीक है, मैंने क्वेरी चलाई और डेटाबेस 45 जीबी तक बढ़ गया। मैं डेटाबेस फिर से संकीर्ण भाग गया तो यह मूल 24733.88MB पर वापस आ गया है। मुझे यकीन नहीं है कि क्या हो रहा है !!! :-( – Vinod

1

डेटाबेस आकार बस हटना नहीं होगा क्योंकि आप वस्तुओं को हटा दिया है। डेटाबेस सर्वर आमतौर पर बाद में डेटा आवेषण या नई वस्तुओं के लिए उपयोग किए जाने वाले पुनः दावा किए गए स्थान को रखता है।

स्थान मुक्त करने के लिए, आपको डेटाबेस फ़ाइल को कम करना होगा। देखें How do I shrink my SQL Server Database?

+0

की तरह मैं अपने संपादन में उल्लेख किया है, मैं पहले से ही मेरे डेटाबेस सिकुड़ और लॉग फ़ाइलें कोशिश की है। यह मदद नहीं की! – Vinod

3

जब कोई चर लंबाई लंबाई कॉलम तालिका से गिरा दी जाती है, तो यह तालिका के आकार को कम नहीं करती है। तालिका का आकार तब तक रहता है जब तक इंडेक्स को पुनर्गठित या पुनर्निर्माण नहीं किया जाता है।

डीबीसीसी कमांड डीबीसीसी क्लेनटेबल भी है, जिसका प्रयोग पहले लम्बाई लंबाई कॉलम के साथ किसी भी स्थान पर पुनः प्राप्त करने के लिए किया जा सकता है। यहाँ वाक्य रचना है:

DBCC CLEANTABLE ('MyDatabase','MySchema.MyTable', 0)WITH NO_INFOMSGS; 
GO 

राज

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