2012-01-04 15 views
5

में लेनदेन लॉग को अक्षम करने के लिए कैसे करें SQL Server 2008 में लेनदेन लॉग या साफ़ लॉग फ़ाइल अक्षम करने का कोई तरीका है?SQL सर्वर 2008

जब मैं अपनी परियोजना में एक प्रश्न निष्पादित करता हूं (लेनदेन के मामले में बहुत बड़ा) उस समय यह लॉग फ़ाइल का आकार बढ़ने के लिए गोरिंग करेगा (2 से 3 जीबी)।

कृपया मुझे कुछ अच्छा विकल्प सुझाएं।

+1

आपका प्रश्न पहले से ही पूछा जा चुका है और SO पर उत्तर दिया गया है। यहां लिंक http://stackoverflow.com/questions/996403/disable-transaction-log – GuZzie

+0

@GuZzie हाँ है, लेकिन लिंक केवल वसूली मॉडल के लिए है - और ओपी ने इसे साफ़ करने के लिए भी कहा .....इसलिए न केवल पूर्ण-पूर्ण वास्तविक लिंक डालें। –

+1

@RoyiNamir प्रश्न 2 साल पहले पूछा गया था और अभी भी मंजूरी नहीं दी गई है? उस स्थिति में अभी भी एक ही संकल्प अरुण के सवाल का जवाब देना चाहिए। सोचने के लिए lol – GuZzie

उत्तर

3

आप इसे छोटा कर सकते हैं

DECLARE @sql NVARCHAR(MAX) = '' 
SELECT @sql = @sql + N'DBCC SHRINKFILE('+CAST(file_id AS NVARCHAR)+N', 0);' 
FROM sys.database_files 
WHERE type = 1 

EXEC(@sql) 

लेकिन यह केवल सरल वसूली मॉडल के साथ काम करता है, बजाय आप लॉग बैक अप लेने और यह बाद में हटना करने के लिए है

आप सभी भले ही अपने डेटाबेस केवल पढ़ने के लिए मोड में है पर लॉग फाइल नहीं छोड़ सकते हैं।

और एसक्यूएल सर्वर के डीबी से निपटने के दौरान अपने दृष्टिकोण को फिर से डिजाइन और समीक्षा करने का प्रयास करें। फाइलों को कम करने के लिए यह सही विकल्प या सर्वोत्तम अभ्यास नहीं है - खासकर नियमित आधार पर!

+0

आपके लिए धन्यवाद प्रयास, क्या यह इस के लिए नौकरी बनाने का सही विकल्प है, इसलिए विशेष अंतराल पर यह उस फ़ाइल को निष्पादित और छोटा कर देगा? –

+0

हाँ - बस आपके मामले में हो सकता है, लेकिन एसक्यूएल सर्वर के डीबी से निपटने के दौरान अपने दृष्टिकोण को फिर से डिजाइन और समीक्षा करने का प्रयास करें। फाइलों को कम करने के लिए यह सही विकल्प या सर्वोत्तम अभ्यास नहीं है - खासकर नियमित आधार पर! –

+0

यह पूर्ण रिकवरी के साथ काम करता है लेकिन यह आपकी लॉग बैकअप श्रृंखला को तोड़ देता है। लॉग बैकअप श्रृंखला को रीसेट करने के लिए आपको पूर्ण बैकअप की आवश्यकता है। यह वास्तव में जवाब नहीं है, वास्तव में। यह सिर्फ एक लक्षण को हल करता है और और समस्याएं पैदा करता है। मैं कम नहीं करूँगा क्योंकि आप सिकुड़ने योग्य हैं। प्रश्न – gbn

0

बदलने के लिए वसूली मॉडल: simple

ALTER DATABASE myDB SET RECOVERY SIMPLE 

और चलाने

DBCC SHRINKFILE (MyLog, 1); // to 1 MB 

लेकिन जहां से आप लॉग नाम मिलता है?

sp_helpdb MyDb 
+3

समाधान और फिर यह फिर से बढ़ता है, जिससे शारीरिक विखंडन और वीएलएफ मुद्दों का कारण बनता है। – gbn

+0

@gbn कमांड कुछ भी नहीं है। Ive एक हैश टूल का निर्माण करता है जो एक बाक लेता है - इसे पुनर्प्राप्त करता है, हैशा डेटा, और एक नया बाक बना रहा है.अब, लॉग फ़ाइल को छीनने से मुझे बहुत मदद मिली। –

+0

कमांड विशिष्ट उपयोग के लिए है। मुझे पता है तुमने क्या किया: आपने dba.se पर पूछा। लेकिन इसका मतलब यह नहीं है कि यह उपयोग adhoc के लिए उपयुक्त है। और -1 – gbn

8

आप एसक्यूएल सर्वर में लेन-देन लॉग अक्षम नहीं कर सकते हैं। बिल्कुल नहीं।

आप सरल वसूली मॉडल

ALTER DATABASE YourDatabase SET RECOVERY SIMPLE 

जो कम प्रवेश करेंगे करने के लिए स्विच कर सकते हैं - लेकिन लेन-देन लॉग इस तरह के एक मौलिक, एसक्यूएल सर्वर में मूल अवधारणा है, तो आप सिर्फ इतना है कि बंद नहीं कर सकते।

2

आप लेनदेन लॉग को अक्षम नहीं कर सकते हैं।

यदि आपका लॉग 3 जीबी बड़ा होना चाहिए, तो हो सकता है। यदि आप इसे कम करते हैं, तो यह फिर से बढ़ेगा और अन्य समस्याओं का कारण बन जाएगा।

यदि यह एक बंद है, आप विकास द्वारा

  • लेनदेन batching को कम कर सकते हैं: उदाहरण: Bulk DELETE on SQL Server 2008 (Is there anything like Bulk Copy (bcp) for delete data?)। 3 जीबी वृद्धि उस लेनदेन के रोलबैक को अनुमति देने के लिए है
  • सिंपल रिकवरी पर स्विच करें, पूर्ण (यदि आवश्यक हो) पर वापस बदलें: नोट, आप एक पूर्ण बैकअप के बाद की आवश्यकता होगी। लॉग अभी भी रोलबैक अनुमति देने के लिए निश्चित रूप से बढ़ेगा