2012-11-16 13 views
22

डेटाबेस '' के लिए लेनदेन लॉग भरा हुआ है। यह पता लगाने के लिए कि लॉग में स्थान का पुन: उपयोग क्यों नहीं किया जा सकता है, sys.databases में log_reuse_wait_desc कॉलम देखें। कृपया इस समस्या को हल करने में मेरी मदद करें। अग्रिम धन्यवाद।डेटाबेस 'डेटाबेसबेस' के लिए लेनदेन लॉग भरा हुआ है।

+4

क्या आपने त्रुटि संदेश में सलाह का पालन किया है? तुमने वहां क्या पाया? आपने इस बिंदु पर क्या शोध किया है? –

+0

क्या वास्तव में संदेश में कोई डेटाबेस नाम नहीं है? – egrunin

+1

एमएसडीएन आज़माएं: [एक लेनदेन लॉग अप्रत्याशित रूप से बढ़ता है या SQL सर्वर में पूर्ण हो जाता है] (http://support.microsoft.com/kb/317375) इसमें समस्या का काफी पूर्ण स्पष्टीकरण है। – egrunin

उत्तर

16

सबसे अधिक संभावना जवाब आप लॉग बैकअप या उसमें कोई खुला लेन-देन है चलाने की आवश्यकता है।

यहाँ एक छोटे से अधिक आप मदद करने के लिए है ...

भागो अपने सर्वर पर इस स्क्रिप्ट:

-- last FULL backup 
;with FULLBUs 
as (
    select d.name, max(b.backup_finish_date) as 'Last FULL Backup' 
    from sys.databases d 
     join msdb.dbo.backupset b 
      on d.name = b.database_name 
    where b.type = 'D' 
    group by d.name 
), 

-- last LOG backup for FULL and BULK_LOGGED databases 
LOGBUs 
as (
    select d.name, max(b.backup_finish_date) as 'Last LOG Backup' 
    from sys.databases d 
     join msdb.dbo.backupset b 
      on d.name = b.database_name 
    where d.recovery_model_desc <> 'SIMPLE' 
     and b.type = 'L' 
    group by d.name 
) 

-- general overview of databases, recovery model, and what is filling the log, last FULL, last LOG 
select d.name, d.state_desc, d.recovery_model_desc, d.log_reuse_wait_desc, f.[Last FULL Backup], l.[Last LOG Backup] 
from sys.databases d 
    left outer join FULLBUs f 
     on d.name = f.name 
    left outer join LOGBUs l 
     on d.name = l.name 
where d.name not in ('model', 'TempDB') 
order by d.name 

इस क्वेरी आप अपने डेटाबेस का एक मोटा सिंहावलोकन, क्या वसूली मॉडल वे कर रहे हैं दे देंगे उपयोग करना, लॉग भरना क्यों है, और जब आपका अंतिम पूर्ण और लॉग बैकअप चलाया गया था।

log_reuse_wait_description चिह्नित कॉलम को देखें। सबसे अधिक संभावना है कि यह बैकअप कहता है। अगला सबसे संभावित कारण ट्रांज़ेक्शन है।

मूल रूप से, अपने सरल डेटाबेस के लिए, हर दिन एक पूर्ण बैकअप चलाएँ:

यदि यह बैकअप यहाँ है कुछ जानकारी है। अपने पूर्ण डेटाबेस के लिए, हर दिन एक पूर्ण बैकअप चलाएं, और हर घंटे एक LOG बैकअप चलाएं। अपना काम रखने के दौरान डेटा खोने की अपनी क्षमता से मेल खाने के लिए अपने LOG डेटाबेस की आवृत्ति समायोजित करें।

अपने बैकअप को प्रबंधित करने का सबसे आसान तरीका Ola Hallengren's maintenance scripts का उपयोग करना है। अपनी वेबसाइट पर जाएं और उनका उपयोग करने का प्रयास करें।

आप कारण के रूप में लेनदेन देखते हैं, चलाने की कोशिश:

dbcc opentran 

और ट्रैक जो कोई भी है खुला लेनदेन है।

+1

बहुत उपयोगी, धन्यवाद! –

+0

मेरा सभी लॉग_reuse_wait_description कॉलम में या तो "कुछ नहीं" या "चेकपॉइंट" कहता है। –

44

निस्संदेह, आप Full Recovery Mode में डेटाबेस चला रहे हैं, और लेनदेन लॉग बैकअप लेने में विफल रहे।

SQL सर्वर प्रबंधक में अपने डेटाबेस राइट-क्लिक करें, और विकल्प पृष्ठ को चेक करें। Full से Simple पर पुनर्प्राप्ति मॉडल स्विच करें और फिर डेटाबेस को राइट-क्लिक करें। TasksShrink, Files का चयन करें। लॉग फ़ाइल को उचित आकार में संक्षिप्त करें (मैं आम तौर पर डेटा फ़ाइलों के आकार के 20-25% तक चिपक जाता हूं)।

Full Recovery Model पर वापस स्विच करें, और सीधे एक पूर्ण डेटाबेस बैकअप लें।

अब आपको यह पता लगाने की आवश्यकता है कि आपको अपने डेटाबेस को पॉइंट-इन-टाइम पर पुनर्प्राप्त करने की क्षमता की आवश्यकता है या नहीं। यदि ऐसा है, तो अपने व्यापार की आवश्यकताओं के अनुसार नियमित लेनदेन लॉग और शायद अंतर बैकअप निर्धारित करें।

यदि व्यवसाय डेटा हानि की एक निश्चित राशि के साथ रह सकता है, पूर्ण बैकअप निर्धारित कर सकता है और Simple मोड पर स्विच कर सकता है।

+2

इस उत्तर और @ स्टीवन के उत्तर के बीच, कुछ अच्छी जानकारी! –

0

डेटाबेस \ गुण \ फ़ाइलों पर राइट क्लिक करें।

आपके पास डेटाबेस फ़ाइलों के साथ एक तालिका होगी, जिसमें एक लॉग फ़ाइल है। बस प्रारंभिक आकार को उचित मात्रा में विस्तारित करें।

0

यह डेटाबेस नोड -> कार्य-> बैक अप-> सामान्य (टैब में) पर राइट क्लिक करें -> "बैकअप प्रकार" को "लेनदेन लॉग" पर सेट करें -> ठीक है।

1

यदि आपका डेटाबेस पुनर्प्राप्ति मॉडल भरा हुआ है और आपके पास लॉग बैकअप रखरखाव योजना नहीं है, तो आपको यह त्रुटि मिल जाएगी क्योंकि लेनदेन लॉग LOG_BACKUP के कारण पूर्ण हो गया है।

यह आपको इस डेटाबेस पर किसी भी तरह की कार्रवाई करने से रोक देगा, और SQL सर्वर डेटाबेस इंजन 9002 त्रुटि उठाएगा। इस व्यवहार को दूर करने के लिए

मैं आपको यह The transaction log for database ‘SharePoint_Config’ is full due to LOG_BACKUP जांचने की सलाह देता हूं जो लॉग बैकअप रखरखाव योजना जैसे इस समस्या को हल करने के लिए विस्तृत चरणों को दिखाता है।

+2

उत्तर देने के लिए कहां पोस्ट करें (लिंक में), आपको इस प्रश्न के अनुरूप उस जानकारी को आसवित करना होगा। कृपया कुछ दिशानिर्देशों के लिए [मैं एक अच्छा उत्तर कैसे लिखूं?] (/ सहायता/कैसे जवाब देना) और [दूसरों द्वारा लिखित सामग्री का संदर्भ कैसे लें] (/ सहायता/संदर्भ)। लिंक-केवल उत्तरों को स्टैक ओवरव्लो पर कम गुणवत्ता वाले उत्तरों माना जाता है, और इसे हटाने के अधीन हैं। –

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