लॉग फ़ाइल को सिकोड़ने से आकार कम नहीं होता है


23

मेरे पास एक डेटाबेस है जिसमें 350 एमबी डेटा फ़ाइल (.mdf) और 4.9 GB लॉग फ़ाइल (.ldf) है। पुनर्प्राप्ति मॉडल के लिए सेट किया गया है FULL

जब मैं लॉग फ़ाइल को सिकोड़ने का प्रयास करता हूं, तो यह सिकुड़ नहीं रहा है।

मुझे पता है कि एक डेटाबेस को सिकोड़ना अच्छा नहीं है और यह नहीं किया जाना चाहिए। लेकिन फिर भी मैं इसे लॉग फ़ाइल को सिकोड़ने के लिए करने की कोशिश कर रहा हूं।

जब मैं भागा

DBCC SQLPerf(logspace) 

मैंने पाया कि लॉग का आकार 4932 एमबी है और लॉग स्पेस का उपयोग 98.76% है !

फिर मैंने इस कमांड को आजमाया

USE <databasename>;
DBCC loginfo;

अब लगभग सभी वीएलएफ "स्थिति 2" हैं, जिसका अर्थ है कि सभी उपयोग में हैं।

मैंने लॉग बैकअप लेने की कोशिश की और फिर लॉग फ़ाइल को सिकोड़ें। सिकुड़ने से आकार कम नहीं हुआ।

मैंने पुनर्प्राप्ति मॉडल को बदल दिया SIMPLEऔर फिर से सिकुड़ने की कोशिश की, लेकिन इससे भी मदद नहीं मिली।

मैंने खुले लेनदेन के लिए जाँच की

DBCC opentran (database);

और पाया कि अब कोई लेन-देन नहीं खुला है।

लॉग फ़ाइल को सिकोड़ने से मुझे क्या रोक रहा है? इसे कैसे हल किया जा सकता है?

जवाबों:


12

यहाँ मेरे अपने प्रश्न का उत्तर है।

लॉग फ़ाइल के पुन: उपयोग के बारे में जानकारी प्राप्त करने के लिए नीचे दी गई क्वेरी चलाएँ:

SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = 'DBName'

मुझे निम्न आउटपुट मिला:

log_reuse_wait_desc
-------------------
REPLICATION 

प्रतिकृति हटाने के बाद भी डेटाबेस में कुछ प्रतिकृति-संबंधित वस्तुएं शेष थीं।

डेटाबेस से प्रतिकृति को निकालने के लिए, sp_removedbreplication लिए इस्तेमाल किया जा सकता है। लेकिन यह हमारे लिए काम नहीं करता था क्योंकि प्रतिकृति उस समय सक्रिय नहीं थी और वास्तव में प्रतिकृति को बहुत पहले हटा दिया गया था।

समाधान SQL सर्वर के आयात विकल्प का उपयोग करके डेटाबेस सामग्री को दूसरे डेटाबेस में आयात करना था।


मुझे भी यही समस्या थी और इसका उपयोग यह देखने के लिए किया गया था कि db में एक सक्रिय लेनदेन था। log_reuse_wait_descदे दिया ACTIVE_TRANSACTION। जैसे ही लेन-देन पूरा हुआ सिकुड़न ठीक काम कर गई।
स्क्विलमैन

10

लॉग को सिकोड़ने के लिए कदम होने जा रहे हैं

बैकअप लेनदेन एसएसएमएस या टी-एसक्यूएल के माध्यम से लॉग इन करता है और फिर सिकोड़ता है

यदि आप डेटाबेस नाम पर राइट क्लिक करते हैं तो SSMS के लिए कमांड काम करता है

BACKUP LOG <Databasename> TO DISK N'<path\database_log.ldf';
GO

DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS

आपको यह कई बार करना होगा

यदि कोई लेन-देन या कार्य अवरुद्ध है, तो प्रक्रिया की पहचान करने और उसे मारने के लिए गतिविधि मॉनिटर का उपयोग करें, या कार्य को समाप्त करने के लिए SQL एजेंट कार्य गतिविधि मॉनिटर का उपयोग करें।

स्रोत: http://support.microsoft.com/kb/907511


लेकिन मुझे जो समस्या हुई वह अलग है। कृपया नीचे मेरा जवाब देखें
नवनीत

खुशी है कि आप इसे समझ गए, अपडेट के लिए धन्यवाद!
कौगर

गलत सिंटैक्स - एक समान चिह्न गायब है: BACKUP लॉग <Databasename> TO DISK = N '<path \ database_log.ldf';
उल्टा इंजीनियर

9

SQL सर्वर को सिकोड़ने के तरीके के बारे में स्पष्टीकरण के लिए पढ़ें कि कैसे ट्रंक के बाद लॉग की परिपत्र प्रकृति सिकुड़न को रोक सकती है। क्या संभव है कि आप अंतिम एलएसएन बिंदु को वीएलएफ में लॉग करते हैं जो एलडीएफ की पूंछ पर है। सहज रूप से काउंटर करें आपको लॉग राइट्स को उत्पन्न करके लॉग को आगे बढ़ाना चाहिए, इसे सिकोड़ने की अनुमति देने के लिए।


0

आपको पहले एक बैकअप बनाने की आवश्यकता है, डेटाबेस को सिकोड़ने से पहले डेटाबेस के लिए सेट किए गए बैकअप मॉडल पर निर्भर।

आप इसे चलाने का प्रयास कर सकते हैं:

USE <databasename>
GO

BACKUP DATABASE <databasename> TO DISK '<absolute path goes here>\<databasename>.bak';
GO

या आप SSMS से कर सकते हैं और उपलब्ध ग्राफ़िकल टूल का उपयोग कर सकते हैं (विवरण के लिए यहां देखें: http://msdn.microsoft.com/en-us/library/ms187510.aspx )

एक बार जब आप अपने डेटाबेस का बैकअप ले लेते हैं तो आप उसे कंप्रेस कर सकते हैं। हालाँकि, डेटाबेस को सिकोड़ना एक अच्छा विचार नहीं है क्योंकि भारी सूचकांक विखंडन को कम करेगा और डेटा की खोज धीमी हो जाएगी।

उम्मीद है की यह मदद करेगा।


मुझे पता है कि कैसे बैकअप करें और लॉग को छोटा करें और लॉग फ़ाइल का आकार कम करें। लेकिन इस डेटाबेस के लिए मुझे समस्या हो रही है। मैंने बस क्वेरी का चयन किया log_reuse_wait_desc sys.dat डेटाबेस से जहां नाम = 'dbname' और पाया कि प्रतिकृति समस्या का कारण बन रही है। लेकिन मेरे पास प्रतिकृति सेट नहीं है। तो इस डीबी से प्रतिकृति को कैसे हटाएं जो लॉग पुन: प्रतीक्षा_डेस्क में दिखाया गया है?
नवनीत

आप किस SQL ​​सर्वर संस्करण का उपयोग कर रहे हैं?
टोनी कोस्टेलैक

प्रतिकृति को नौकरी के रूप में सेट किया जा सकता है, इसलिए SQL सर्वर एजेंट फ़ोल्डर खोलें, और जॉब फ़ोल्डर का विस्तार करें, यह देखने के लिए जांचें कि क्या कोई प्रतिकृति कार्य सेट है और यदि ऐसा है तो इसे राइट-क्लिक करके बंद करें और स्टॉप जॉब का चयन करें
टोनी Kostelac

यदि आप SQL Server 2005 और ऊपर का उपयोग कर रहे हैं तो sp_removedbreplication 'DB_NAME' प्रतिकृति हटा देगा। Sql सर्वर 2000 के लिए .. blogs.msdn.com/b/repltalk/archive/2010/11/17/… के
Kin Shah

लेकिन मुझे जो समस्या हुई वह अलग है। कृपया मेरा जवाब देखें
नवनीत

0

मैंने पाया है कि मुझे वास्तव में आकार में कमी करने के लिए लेनदेन लॉग प्राप्त करने के लिए डेटाबेस और लेनदेन लॉग के 2 या 3 बैकअप करने होंगे। मेरे पास एक डेटाबेस है जो पूर्ण पुनर्प्राप्ति मॉडल के साथ बनाया गया था। हर रात यह डेटाबेस और लेनदेन लॉग का बैकअप करता है, लेकिन अनिवार्य रूप से लेनदेन लॉग लगातार 2-3 सप्ताह में बढ़ता है। जब शेष डिस्क स्थान 1GB हो जाता है तो मैं देखूंगा कि लेनदेन लॉग लगभग 30GB है। मैंने Microsoft द्वारा सुझाए गए चरणों का पालन किया और डेटाबेस और लेनदेन दोनों का समर्थन करने के 4 या 5 वें पुनरावृत्ति के बाद अंत में लेन-देन लॉग लॉग करेगा और इसके अतिरिक्त स्थान को छोड़ देगा। फिर मैं वापस जाता हूं और मेरे द्वारा बनाए गए कई बैकअप को हटा देता हूं।


मुझे लगता है कि आप कुछ गलत कर रहे हैं। यदि आप लॉग ठीक से बैकअप लेते हैं तो अप्रयुक्त लॉग को छोटा किया जाना चाहिए। मेरे प्रश्न में दिए गए आदेश आपको समस्या को हल करने में मदद कर सकते हैं।
नवनीत

-8

सिकुड़न लॉग फ़ाइल अवरुद्ध है कि प्रतिकृति के लिए मेरा काम है:

  1. डीबी रिकवरी मॉडल को सरल पर सेट करें
  2. डीबी को ऑफलाइन लें
  3. लॉग फ़ाइल का बैकअप बनाएँ (बस मामले में)
  4. लॉग फ़ाइल हटाएं
  5. DB ऑनलाइन लाओ

मेरे मामले में यह काम किया। DB लाने के बाद ऑनलाइन लॉग स्वचालित रूप से बनाया गया था और इसका आकार 70GB के बजाय 512kb था। लेकिन यह केवल एक समाधान है। मूल समस्या हल नहीं होती है। मेरे मामले में हम प्रतिकृति का उपयोग कर रहे हैं।


4
यह भयानक सलाह है, अपने लेन-देन लॉग को कभी भी नष्ट न करें, सभी प्रकार की समस्याएं इस तरह के भ्रष्टाचार के रूप में आ सकती हैं
टॉम वी - टीम मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.