2014-05-23 9 views
10

के कारण पूर्ण है मेरे पास एक बहुत बड़ा डेटाबेस (50+ GB) है। मेरी हार्ड ड्राइव में जगह खाली करने के लिए, मैंने टेबल में से किसी एक से पुराने रिकॉर्ड हटाने की कोशिश की।एसक्यूएल सर्वर - लॉग ACTIDE_TRANSACTION

delete from Table1 where TheDate<'2004-01-01'; 

हालांकि, SQL सर्वर 2012 ने कहा:: मैं आदेश भागा

Msg 9002, Level 17, State 4, Line 1 
The transaction log for database 'MyDb' is full due to 'ACTIVE_TRANSACTION'. 

और यह एक बात नहीं हटाया था। उस संदेश का क्या अर्थ है? मैं रिकॉर्ड कैसे हटा सकता हूं?

+0

छोटा;) बहुत बड़ा नहीं। निश्चित रूप से तब तक भिन्न नहीं होता जब तक यह मध्य श्रेणी सर्वर की स्मृति में फिट बैठता है। – TomTom

उत्तर

3

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

* Issue a CHECKPOINT command to free up log space in the log file. 

* Check the available log space with DBCC SQLPERF('logspace'). If only a small 
    percentage of your log file is actually been used, you can try a DBCC SHRINKFILE 
    command. This can however possibly introduce corruption in your database. 

* If you have another drive with space available you can try to add a file there in 
    order to get enough space to attempt to resolve the issue. 

आशा यह आपके समाधान ढूँढने में मदद मिलेगी।

+0

डीबीसीसी एसक्यूएलपीआरएफ ('लॉगस्पेस') आपको "लॉग साइज (एमबी)" और "लॉग स्पेस प्रयुक्त (%)" दिखाएगा। ध्यान रखें कि लॉग आकार लिखित लॉग के वास्तविक आकार को इंगित नहीं करता है लेकिन डिस्क पर आपकी लॉग फ़ाइल का आकार इंगित करता है। इसलिए एमबी में लॉग का सही आकार प्राप्त करने के लिए, दो कॉलम गुणा करें। उदा। 2.00 एमबी और 70% का लॉग आकार का मतलब है कि आपके पास 1.4 एमबी लॉग डेटा है। – brentlightsey

8

यहां मैं त्रुटि के आसपास काम करने के लिए क्या कर रहा हूं।

सबसे पहले, मैंने डेटाबेस रिकवरी मॉडल को सरल के रूप में स्थापित किया। अधिक जानकारी here

फिर, कुछ पुरानी फाइलों को हटाकर मैं 5 जीबी मुक्त जगह बनाने में सक्षम था जिसने लॉग फ़ाइल को और बढ़ने के लिए और स्थान दिया।

मैं बिना किसी चेतावनी के DELETE कथन को सफलतापूर्वक वापस कर देता हूं।

मैंने सोचा कि DELETE कथन चलाकर डेटाबेस मेरे हार्ड ड्राइव में अंतरिक्ष को खाली कर देगा। लेकिन यह सच नहीं था।

DBCC SHRINKDATABASE (MyDb, 0); 
GO 

अधिक है कि आदेश here के बारे में जानकारी: जब तक आप निम्न आदेश चला अंतरिक्ष एक DELETE कथन के बाद मुक्त inmediatedly ऑपरेटिंग सिस्टम को वापस नहीं कर रहा है।

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