अपर्याप्त डिस्क स्थान के कारण डेटाबेस के लिए एक नया पृष्ठ आवंटित नहीं किया जा सका


13

SQL सर्वर आयात और निर्यात विज़ार्ड का उपयोग करते हुए, मुझे यह त्रुटि मिलती है:

त्रुटि 0xc0202009: डेटा प्रवाह कार्य 1: SSIS त्रुटि कोड DTS_E_OLEDBERROR।
ओएलई डीबी त्रुटि उत्पन्न हुई। त्रुटि कोड: 0x80004005।
फ़ाइलग्रुप 'PRIMARY' में अपर्याप्त डिस्क स्थान के कारण डेटाबेस 'डेटाबेस' के लिए एक नया पेज आवंटित नहीं किया जा सका। फ़ाइल समूह में ऑब्जेक्ट्स को ड्रॉप करके आवश्यक स्थान बनाएं, फ़ाइलग्रुप में अतिरिक्त फ़ाइलों को जोड़कर, या फ़ाइलग्रुप में मौजूदा फ़ाइलों के लिए ऑटोग्रॉथ सेट करें।

मैं 2GB फ़ाइलों की एक श्रृंखला अपलोड करने की कोशिश कर रहा हूं और 4 डी फाइल को लोड करने के दौरान, मुझे डेटाबेस गुणों> फ़ाइलों पर जाने के बाद भी उपरोक्त त्रुटि संदेश प्राप्त करना जारी है और फ़ाइलग्रुप के ऑटोग्रॉथ को 2500 एमबी में बदलना और असीमित अधिकतम करना है।

सबसे अच्छा समाधान क्या है? यह डेटा अंततः लगभग 60-80GB तक ले जाएगा।


1
SQL सर्वर का कौन सा संस्करण चल रहा है? ड्राइव (डेटा) पर "डेटाबेस" के लिए डेटा फ़ाइलों को संग्रहीत करने के लिए कितना खाली स्थान उपलब्ध है?
नब्रोन्ड

2
त्रुटि संदेश आपको "सर्वश्रेष्ठ वर्कअराउंड" बताता है: फ़ाइलग्रुप में ऑब्जेक्ट्स को ड्रॉप करके आवश्यक स्थान बनाएं, फ़ाइलग्रुप में अतिरिक्त फ़ाइलों को जोड़कर, या फ़ाइलग्रुप में मौजूदा फ़ाइलों के लिए ऑटोग्रॉथ सेट करें। मुझे यकीन नहीं है कि हम आपको और क्या बता सकते हैं।

1
ब्रैंडन, SQL सर्वर 2012. डेटाबेस के लिए डेटा फ़ाइलों को संग्रहीत करने वाले ड्राइव पर 760gb मुक्त स्थान। केन, मेरे पास ऑटोग्रॉथ सक्षम है, ऑटोग्रॉथ 2500 एमबी से बढ़ता है और असीमित अधिकतम होता है। क्या मैं अभी भी इस मुद्दे पर चल रहा हूँ? क्या यह संभव है कि कई ऑटोग्रॉफ़्ट हैं जिन्हें सक्षम करने की आवश्यकता है?

1
क्या आपने डीबी को मैन्युअल रूप से विकसित करने की कोशिश की है?

1
क्या ऐसा हो सकता है कि ऑटोग्रो केवल तत्वों के बीच काम करता है और वह एक सम्मिलित सीमा से अधिक हो जाता है? मेरी शर्त होगी - अगर 2500gb ऑटोग्रॉ पर 20000 जीबी इंसर्ट फेल होता है .... तो यह 900 ग्राम फ्री हो सकता है और इंसर्ट फेल हो जाता है।
टॉमटॉम

जवाबों:


11

Sql एक्सप्रेस डेटाबेस 10g पर निकल जाएगा। मेरा मानना ​​है कि यह आपको मिलने वाले त्रुटि संदेश के समान है।

मैं एक ग्राहक में एक बार इस समस्या में भाग गया और मुझे यह पता लगाने में थोड़ा समय लगा।

sql का कौन सा संस्करण चल रहा है?


1
इस समाधान ने मुझे बचा लिया! मैं एक्सप्रेस संस्करण पर था और देव में अपग्रेड किया गया था।
इज़राइल रोड्रिगेज

7

क्या आपको यकीन है कि यह

फ़ाइलग्रुप 'PRIMARY' में अपर्याप्त डिस्क स्थान के कारण डेटाबेस 'डेटाबेस' के लिए एक नया पेज आवंटित नहीं किया जा सका।

और नहीं

फ़ाइलग्रुप 'PRIMARY' में अपर्याप्त डिस्क स्थान के कारण डेटाबेस 'tempdb' के लिए एक नया पेज आवंटित नहीं किया जा सका।

?

यदि यह वास्तव [tempdb]में त्रुटि संदेश में है, तो यह एक ऐसी चीज है जिसे [tempdb]अन्य डेटाबेस से अलग एक उचित आकार की डिस्क पर सुनिश्चित करके अलग से प्रबंधित करने की आवश्यकता है ।

यदि यह [tempdb]त्रुटि संदेश में नहीं है, तो मुझे लगता है कि इस तरह का "अपलोड" [tempdb]बहुत मुश्किल होगा। है [tempdb]एक ही डिस्क / LUN के रूप में पर 'database'? यदि ऐसा है, तो आप संभवतः अपनी समस्या को कई प्रयास फ़ाइल विकास (कई डेटाबेस पर) के साथ बढ़ा रहे हैं। इसलिए जब आप यह "अपलोड" कर रहे हों तो सुनिश्चित करें कि आप निगरानी भी कर रहे हैं [tempdb]

यदि आप [tempdb]एक अलग ड्राइव पर हैं और आप निश्चित हैं कि आपके पास पर्याप्त जगह है, तो मैं आगे जाऊंगा और आपके डेटा फ़ाइल को उस आकार का आकार दूंगा जिसकी आप उम्मीद करते हैं कि यह एंड-स्टेट आकार है:

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE
    (
    NAME = datafile,
    SIZE = 60GB,
    FILEGROWTH = 5GB
);
GO

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

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 8000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 16000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 24000MB
);
GO
...

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

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 80000MB,
    FILEGROWTH = 8000MB
);

6

इसे मैन्युअल रूप से विकसित करने का प्रयास करें:

1. ऑब्जेक्ट एक्सप्लोरर में, SQL सर्वर डेटाबेस इंजन के एक उदाहरण से कनेक्ट करें, और फिर उस उदाहरण का विस्तार करें।

2. अतिरिक्त डेटाबेस, डेटाबेस को बढ़ाने के लिए राइट-क्लिक करें, और उसके बाद गुण क्लिक करें।

3. डेटाबेस गुण में, फ़ाइलें पृष्ठ का चयन करें।

4. किसी मौजूदा फ़ाइल का आकार बढ़ाने के लिए, फ़ाइल के लिए प्रारंभिक आकार (MB) कॉलम में मान बढ़ाएँ। आपको डेटाबेस का आकार कम से कम 1 मेगाबाइट तक बढ़ाना होगा।

5. एक नई फ़ाइल जोड़कर डेटाबेस का आकार बढ़ाएं, जोड़ें पर क्लिक करें और फिर नई फ़ाइल के लिए मान दर्ज करें। अधिक जानकारी के लिए, डेटाबेस में डेटा या लॉग फ़ाइल जोड़ें देखें।

6. ठीक क्लिक करें।

प्रेषक: MSDN


4
मैन्युअल विस्तार अच्छा है क्योंकि यह आपको अधिक विवरण बता सकता है। मेरे मामले में मुझे मिला: "क्रिएट डटबीस्ट या अलर्ट डाटबेस विफल हो गया क्योंकि परिणामी संचयी डेटाबेस का आकार प्रति डेटाबेस 10240 एमबी की आपकी लाइसेंस सीमा को पार कर जाएगा।" जो स्वत: स्पष्ट है।
user824276

1

आप डेटाबेस से खाली स्थान के लिए निम्न स्क्रिप्ट का भी उपयोग कर सकते हैं:

DELETE FROM STActionLog
where id in (SELECT TOP 100000 id
             FROM STActionLog
             ORDER BY actionDate ASC)

delete from STActionLog
where actionDate < '2019-08-01'

ये लोग त्रुटि के साथ मेरी मदद करते हैं :) यह भी सुनिश्चित करें कि हमारे पास कंप्यूटर पर पर्याप्त डिस्क स्थान है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.