2008-10-02 11 views
5

मेरे पास कई डेटाबेस हैं जहां लेनदेन लॉग (.LDF) डेटाबेस फ़ाइल (.MDF) से कई गुना बड़ा है।मैं एमएस एसक्यूएल 2000 डेटाबेस पर लेनदेन लॉग को कैसे छोटा कर सकता हूं?

इन्हें स्वचालित रूप से कम करने या उन्हें इतना बड़ा होने से रोकने के लिए मैं क्या कर सकता हूं?

उत्तर

6

यही काम

use master 
go 
dump transaction <YourDBName> with no_log 
go 
use <YourDBName> 
go 
DBCC SHRINKFILE (<YourDBNameLogFileName>, 100) -- where 100 is the size you may want to shrink it to in MB, change it to your needs 
go 
-- then you can call to check that all went fine 
dbcc checkdb(<YourDBName>) 

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

+0

यह बहुत अच्छा काम किया! –

2

डीबीसीसी SHRINKFILE।

Here for 2005. Here for 2000.

+0

दोनों लिंक 2005 संस्करण को इंगित करते हैं। यह 2000 के लिए एक है: http://support.microsoft.com/kb/272318 – lepe

3

सही एंटरप्राइज़ प्रबंधक में डेटाबेस पर> सभी कार्य> डेटाबेस सिकोड़ें।

+0

नोट: यह विधि, जो सबसे आसान है, ज्यादातर मामलों में काम कर सकती है, यदि कुछ नहीं होता है, तो स्वीकार किए गए एक का पालन करें। – lepe

4

बैकअप लेनदेन लॉग और इसे संक्षिप्त करें।

यदि डीबी नियमित रूप से बैक अप लिया जा रहा है और चेकपॉइंट पर छंटनी की जा रही है, तो इसे नियंत्रण से बाहर नहीं होना चाहिए, हालांकि, यदि आप उन अंतराल के बीच लेनदेन की बड़ी संख्या (आकार) कर रहे हैं, तो यह अगले तक बढ़ेगा चौकी।

0

एक और बात तुम कोशिश कर सकते (यदि पहले से नहीं कर रहे हैं) डेटाबेस के लिए आसान करने के लिए वसूली मोड सेट करने, जो के रूप में बढ़ रहा से लॉग फाइल रखेंगे है तेजी से। हमें हाल ही में यह समस्या हुई थी जहां हमारे लेनदेन लॉग भर गए थे और अब हमें लेनदेन की अनुमति नहीं थी।

कई उत्तरों और सरल वसूली मोड में संकुचित फ़ाइल का एक संयोजन यह सुनिश्चित करता है कि हमारी लॉग फ़ाइल उचित आकार में रहे।

0

क्वेरी विश्लेषक का उपयोग करना:

USE yourdabatase 
SELECT * FROM sysfiles 

आप के लिए कुछ इसी तरह खोजना चाहिए:

FileID … 
1    1    24264 -1   1280  1048578    0    yourdabatase_Data D:\MSSQL_Services\Data\yourdabatase_Data.MDF 
2    0    128   -1   1280  66   0        yourdabatase_Log  D:\MSSQL_Services\Data\yourdabatase_Log.LDF 

लॉग फ़ाइल की फ़ाइल आईडी की जांच करें (अपने 2 ज्यादातर समय)। प्रत्येक पृष्ठ को हार्ड ड्राइव पर लिखने के लिए चेकपॉइंट कमांड 2 या 3 बार निष्पादित करें।

Checkpoint 
GO 
Checkpoint 
GO 

निम्नलिखित व्यवहार आदेश निष्पादित 1 एमबी

DUMP TRAN yourdabatase WITH no_log 
DBCC SHRINKFILE(2,1) /*(FileID , the new size = 1 Mb)*/ 
0

यहाँ sugested समाधान का उपयोग करना चाहिए है मैं

BACKUP LOG <CatalogName> with TRUNCATE_ONLY 
DBCC SHRINKDATABASE (<CatalogName>, 1) 
use <CatalogName> 
go 
DBCC SHRINKFILE(<CatalogName_logName>,1) 
1

कोई भी यहाँ यह कहा क्या उपयोग किया गया है, तो मैं देगा: कभी कभी लेनदेन लॉग हटना। SQL सर्वर बिंदु दृश्य से यह एक बुरा विचार है।

दैनिक डीबी बैकअप और प्रति घंटा (या कम) लेनदेन लॉग बैकअप करके लेनदेन लॉग को छोटा रखें। लेनदेन लॉग बैकअप अंतराल इस बात पर निर्भर करता है कि आपका डीबी कितना व्यस्त है।

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