2008-09-02 6 views

उत्तर

109

के बाद अगर मैं अच्छी तरह से याद है ... क्वेरी विश्लेषक या समकक्ष में:

BACKUP LOG databasename WITH TRUNCATE_ONLY 

DBCC SHRINKFILE ( databasename_Log, 1) 
+2

यह डेटाबेस पुनर्प्राप्ति मॉडल को SIMPLE (ब्लॉर्गबीर्ड के उत्तर में) के रूप में सेट करने से निश्चित रूप से बेहतर है क्योंकि यदि आपका पुनर्प्राप्ति मॉडल पूर्ण है, तो आपके पास यह है एक कारण के लिए इस तरह से सेट करें। –

+47

truncate_only को SQL Server 2008 में बहिष्कृत किया गया है, इसलिए आपको डीबी को सरल पुनर्प्राप्ति पर स्विच करना होगा http://msdn.microsoft.com/en-us/library/ms143729(SQL.90).aspx –

+9

SQL Server 2012 के लिए यह काम करता है, लेकिन 'TRUNCATE_ONLY' के बिना '। –

258

प्रबंधन स्टूडियो में:

  • एक जीवित पर्यावरण पर ऐसा मत करो, लेकिन आप के रूप में ज्यादा के रूप में आप कर सकते हैं db अपने देव हटना सुनिश्चित करने के लिए:
    • राइट-क्लिक करें डेटाबेस, चुनें Properties, फिर Options। >Shrink - ->Files
    • बदलें
    • सुनिश्चित करें कि "रिकवरी मॉडल" के लिए "सरल", नहीं "पूर्ण"
    • ठीक क्लिक करें
  • राइट-क्लिक करें डेटाबेस फिर से, चुनें Tasks सेट किया गया है फ़ाइल प्रकार "लॉग"
  • पर क्लिक करें ठीक क्लिक करें।

वैकल्पिक रूप से, एसक्यूएल यह करने के लिए:

ALTER DATABASE mydatabase SET RECOVERY SIMPLE 
DBCC SHRINKFILE (mydatabase_Log, 1) 

रेफरी: http://msdn.microsoft.com/en-us/library/ms189493.aspx

+1

आपके उत्तर ने अभी मेरा दिन बचा लिया है! मुझे "राइट-क्लिक - टास्क -> हटना" विकल्प नहीं पता था। धन्यवाद! –

+7

आप लाइव वातावरण में क्या करते हैं? पहले लॉग का बैकअप लें? –

+1

मैं कोई डीबीए नहीं हूं, लेकिन हाँ, मेरा मानना ​​है कि लॉग का बैक अप इसे छोटा कर देगा: http://technet.microsoft.com/en-us/library/ms179478।एएसपीएक्स – Blorgbeard

3

बैकअप लॉग logname साथ truncate_only एक DBCC SHRINKFILE आदेश

46

एसक्यूएल सर्वर 2008 के लिए, आदेश है:

ALTER DATABASE ExampleDB SET RECOVERY SIMPLE 
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY) 

यह 1 एमबी करने के लिए नीचे मेरी 14GB लॉग फ़ाइल कम कर दिया।

+4

चूंकि प्रश्न संदिग्ध है कि कौन सा संस्करण और स्वीकृत उत्तर SQL Server 2008 पर लागू नहीं है, यह उत्तर अभी भी उम्र के बावजूद मान्य है। –

+0

धन्यवाद, इससे मुझे एक बड़ी लॉग फ़ाइल को कम करने में मदद मिली जिसने डीबीसीसी SHRINKFILE –

+3

के साथ प्रतिक्रिया नहीं की थी जब आप कर चुके हैं तो पुनर्प्राप्ति मॉडल को पूर्ण रूप से बदलना न भूलें! – Dan

32

एसक्यूएल 2008 के लिए आप कर सकते हैं nul डिवाइस के लिए बैकअप लॉग:

BACKUP LOG [databaseName] 
TO DISK = 'nul:' WITH STATS = 10 

और फिर DBCC SHRINKFILE का उपयोग लॉग फ़ाइल को काटना।

+2

यह एकमात्र ऐसा है जो मेरी स्थिति में काम कर रहा है ... TRUNCATE_ONLY – TomXP411

-7

प्रबंधन स्टूडियो के माध्यम से डेटाबेस को अलग करना एक और विकल्प है। फिर बस लॉग फ़ाइल को हटाएं, या उसका नाम बदलें और बाद में हटा दें।

प्रबंधन स्टूडियो में वापस डेटाबेस को फिर से संलग्न करें। संलग्न विंडो में लॉग फ़ाइल को फ़ाइलों की सूची से हटा दें।

डीबी एक नई खाली लॉग फ़ाइल संलग्न करता है और बनाता है। सबकुछ जांचने के बाद सब ठीक है, आप नामित लॉग फ़ाइल को हटा सकते हैं।

आपको शायद इसे उत्पादन डेटाबेस के लिए उपयोग नहीं करना चाहिए।

+3

के साथ बैकअप का उपयोग करने का प्रयास करते समय मुझे कोई त्रुटि मिली! यह कभी नहीं करें! लॉग में डेटा हो सकता है अभी तक डेटा फ़ाइल के लिए प्रतिबद्ध नहीं है। आप इस तरह के डेटा खो देंगे। – Paul

+3

चेतावनी! यह गलत और खतरनाक है! – defines

+0

यदि आपके उत्तर में, आप इसे उत्पादन में आजमाने की चेतावनी देते हैं, तो पोस्टिंग के लायक नहीं है। –

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