লগ ফাইল সঙ্কুচিত করা আকার হ্রাস করে না


24

আমার কাছে একটি ডাটাবেস রয়েছে যার একটি 350 এমবি ডেটা ফাইল (.mdf) এবং একটি 4.9 জিবি লগ ফাইল (.ldf) রয়েছে। পুনরুদ্ধার মডেল সেট করা আছে FULL

আমি যখন লগ ফাইলটি সঙ্কুচিত করার চেষ্টা করি তখন এটি সঙ্কোচিত হয় না।

আমি জানি একটি ডাটাবেস সঙ্কুচিত করা ভাল নয় এবং এটি করা উচিত নয়। তবে তবুও আমি লগ ফাইল সঙ্কুচিত করার জন্য এটি করার চেষ্টা করছি।

আমি যখন দৌড়েছি

DBCC SQLPerf(logspace) 

আমি দেখতে পেয়েছি যে লগের আকার 4932 এমবি এবং ব্যবহৃত লগ স্পেস 98.76% !

তারপরে আমি এই আদেশটি চেষ্টা করেছিলাম

USE <databasename>;
DBCC loginfo;

এখন প্রায় সব ভিএলএফই "স্ট্যাটাস 2" যার অর্থ সমস্ত ব্যবহৃত হয় in

আমি লগ ব্যাকআপ নেওয়ার চেষ্টা করেছি এবং তারপরে লগ ফাইলটি সঙ্কুচিত করব। সঙ্কুচিত হওয়ার ফলে আকার হ্রাস হয়নি।

আমি পুনরুদ্ধার মডেলটিতে পরিবর্তন করেছি SIMPLEএবং আবার সঙ্কুচিত করার চেষ্টা করেছি, তবে এটিরও কোনও লাভ হয়নি।

আমি খোলা লেনদেনের জন্য পরীক্ষা করেছিলাম

DBCC opentran (database);

এবং দেখা গেছে যে এখন কোনও লেনদেন খোলা নেই।

লগ ফাইল সঙ্কুচিত করা থেকে আমাকে কী থামছে? আমি কীভাবে এটি সমাধান করতে পারি?

উত্তর:


12

আমার নিজের প্রশ্নের উত্তর এখানে।

লগ ফাইলের পুনরায় ব্যবহারের অপেক্ষার তথ্য পেতে নীচের ক্যোয়ারী চালান:

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

আমি নিম্নলিখিত আউটপুট পেয়েছি:

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

অনুলিপিটি অপসারণ করার পরেও ডাটাবেসে কিছু প্রতিলিপি-সম্পর্কিত অবজেক্ট অবশিষ্ট ছিল।

ডাটাবেস থেকে প্রতিলিপি অপসারণ sp_removedbreplicationকরতে , ব্যবহার করা যেতে পারে। তবে এটি আমাদের পক্ষে কার্যকর হয়নি কারণ প্রতিলিপিটি তখন সক্রিয় ছিল না এবং প্রকৃতপক্ষে প্রতিলিপিটি অনেক আগেই সরানো হয়েছিল।

সমাধানটি ছিল এসকিউএল সার্ভারের আমদানি বিকল্পটি ব্যবহার করে অন্য ডাটাবেসে ডাটাবেস সামগ্রীগুলি আমদানি করা।


আমার একই সমস্যা ছিল এবং এটি ব্যবহার করে দেখতে পেল যে ডিবিতে একটি সক্রিয় লেনদেন রয়েছে। log_reuse_wait_descদিয়েছে ACTIVE_TRANSACTION। লেনদেন শেষ হওয়ার সাথে সাথে সঙ্কুচিত কাজটি ঠিকঠাক হয়ে গেল।
স্কুইলম্যান

10

লগ সঙ্কুচিত করার পদক্ষেপগুলি হতে চলেছে

ব্যাকআপ লেনদেন এসএসএমএস বা টি-এসকিউএল এর মাধ্যমে লগ করুন এবং তারপরে সঙ্কুচিত করুন

আপনি যদি ডাটাবেসের নামটিতে ডান ক্লিক করেন তবে এসএসএমএসের জন্য আদেশগুলি কাজগুলির অধীনে রয়েছে

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

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

আপনাকে সম্ভবত এটি একাধিক বার করতে হবে

যদি কোনও লেনদেন বা কাজটি অ্যাকশনটিকে অবরুদ্ধ করে থাকে তবে প্রক্রিয়াটি সনাক্ত করতে এবং এটি মেরে ফেলার জন্য ক্রিয়াকলাপ মনিটর ব্যবহার করুন বা এসকিউএল এজেন্ট জব অ্যাক্টিভিটি মনিটরটি কাজ শেষ করতে ব্যবহার করুন।

উত্স: http://support.microsoft.com/kb/907511


তবে আমি যে সমস্যার মুখোমুখি হয়েছি তা অন্যরকম
P দয়া করে

শুনে আপনি খুশী হয়ে গেছেন, আপডেটের জন্য ধন্যবাদ!
কুগার9000

ভুল সিনট্যাক্স - একটি সমান চিহ্ন নিখোঁজ: ব্যাকআপ লগ <ডেটাবেসনাম> টু ডিস্ক = এন '<পথ \ ডাটাবেজ_লগ.ल्डফ ';
উল্টো ইঞ্জিনিয়ার

9

এসকিউএল সার্ভার লগকে সঙ্কুচিত করবেন কীভাবে তা সংক্ষেপের পরে লগের বৃত্তাকার প্রকৃতি সঙ্কুচিত হওয়া রোধ করতে পারে তার একটি ব্যাখ্যা জন্য Read সম্ভবত আপনি এলডিএফের লেজের কাছে থাকা ভিএলএফ- তে সর্বশেষ এলএসএন পয়েন্টটি লগইন করতে পারেন । কাউন্টার স্বজ্ঞাতভাবে আপনাকে লগটি সঙ্কুচিত হওয়ার অনুমতি দেওয়ার জন্য, লগ রাইট তৈরি করে তৈরি করতে হবে।


0

আপনাকে ডাটাবেস সঙ্কুচিত করার আগে আপনাকে প্রথমে একটি ব্যাকআপ তৈরি করতে হবে, ডাটাবেসটির জন্য সেটআপ করা ব্যাকআপ মডেলের উপর নির্ভরশীল।

আপনি এটি চালানোর চেষ্টা করতে পারেন:

USE <databasename>
GO

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

অথবা আপনি এটি এসএসএমএস থেকে করতে পারেন এবং উপলব্ধ গ্রাফিকাল সরঞ্জামগুলি ব্যবহার করতে পারেন (বিশদের জন্য এখানে দেখুন: http://msdn.microsoft.com/en-us/library/ms187510.aspx )

একবার আপনি আপনার ডাটাবেসটিকে ব্যাক আপ করে রাখলে আপনি এটি সংকুচিত করতে পারেন। তবে ভারী সূচক বিভাজন ঘটবে এবং ডেটা অনুসন্ধান করা ধীর হয়ে যাবে বলে ডাটাবেস সঙ্কুচিত করা ভাল ধারণা নয়।

আশাকরি এটা সাহায্য করবে.


আমি কীভাবে ব্যাকআপ করব এবং লগটি কেটে ফেলব এবং লগ ফাইলের আকার হ্রাস করব। তবে এই ডাটাবেসের জন্য আমার সমস্যা হচ্ছে I আমি সাসি.ড্যাটাবেসগুলি থেকে নাম_ 'ডিবিনেম' থেকে লগ-রিয়েজ_উইট_ডেস্ক নির্বাচন করে অনুসন্ধান করেছি এবং দেখা গেছে যে প্রতিলিপিটি সমস্যার কারণ হয়ে দাঁড়িয়েছে i তবে এর প্রতিলিপিটি আমার নেই। সুতরাং লগ পুনরায় ব্যবহারের অপেক্ষারত_ডেস্কে প্রদর্শিত এই ডিবি থেকে প্রতিক্রিয়া কীভাবে সরিয়ে নেওয়া যায়?
নবনিতে

আপনি কোন এসকিউএল সার্ভার সংস্করণ ব্যবহার করছেন?
টনি কোস্টেলাক

প্রতিলিপিটি একটি জব হিসাবে সেট করা যেতে পারে, সুতরাং এসকিউএল সার্ভার এজেন্ট ফোল্ডারটি খুলুন, এবং জবস ফোল্ডারটি প্রসারিত করুন, সেখানে কোনও প্রতিরূপ কাজ সেট আপ হয়েছে কিনা তা পরীক্ষা করে দেখুন এবং ডান ক্লিক করে স্টপ জব নির্বাচন করে এটি বন্ধ করুন
টনি কোস্টেলাক

আপনি যদি এসকিউএল সার্ভার 2005 ব্যবহার করেন এবং তারপরে sp_removedbreplication 'DB_NAME' প্রতিলিপি সরিয়ে ফেলবে। স্কেল
কিন শাহ

তবে আমি যে সমস্যার মুখোমুখি হয়েছি তা অন্যরকম
P দয়া করে

0

আমি খুঁজে পেয়েছি যে লেনদেন লগটি আসলে আকারে হ্রাস পেতে আমাকে ডাটাবেস এবং লেনদেন লগ উভয়ের 2 বা 3 ব্যাকআপ করতে হয় perform আমার কাছে একটি ডাটাবেস রয়েছে যা সম্পূর্ণ পুনরুদ্ধারের মডেল দিয়ে তৈরি হয়েছিল। প্রতি রাতে এটি ডাটাবেস এবং লেনদেন লগের ব্যাকআপগুলি সম্পাদন করে তবে অনিবার্যভাবে লেনদেনের লগটি নিয়মিত 2-3 সপ্তাহেরও বেশি বৃদ্ধি পেতে পারে বলে মনে হয়। যখন বাকী ডিস্ক স্পেস 1 গিগাবাইটে পৌঁছে যাবে তখন আমি দেখতে পাবো যে লেনদেনের লগ প্রায় 30 জিবি। আমি মাইক্রোসফ্ট দ্বারা প্রস্তাবিত পদক্ষেপগুলি অনুসরণ করেছি এবং ডেটাবেস এবং লেনদেন লগ উভয়ের ব্যাক আপ করার চতুর্থ বা 5 তম পুনরাবৃত্তির পরে লেনদেন লগটি শেষ পর্যন্ত তার অতিরিক্ত স্থান ছেড়ে দেবে এবং সঙ্কুচিত হবে। তারপরে আমি ফিরে গিয়ে আমার তৈরি একাধিক ব্যাকআপ মুছে ফেললাম।


আমি মনে করি আপনি কিছু ভুল করছেন। আপনি যদি সঠিকভাবে লগ ব্যাকআপ নেন তবে অব্যবহৃত লগটি কেটে ফেলা উচিত। আমার প্রশ্নে প্রদত্ত আদেশগুলি আপনাকে সমস্যার সমাধান করতে সহায়তা করতে পারে।
নবণীত

-8

সঙ্কুচিত লগ ফাইলটি প্রতিরোধকারী প্রতিরূপের জন্য আমার চারপাশের কাজটি হ'ল:

  1. ডিবি রিকভারি মডেলটিকে সরল করুন
  2. অফলাইনে ডিবি নিন
  3. লগ ফাইলের ব্যাকআপ তৈরি করুন (কেবলমাত্র ক্ষেত্রে)
  4. লগ ফাইল মুছুন
  5. অনলাইনে ডিবি আনুন

আমার ক্ষেত্রে এটি কাজ করে। ডিবি আনার পরে লগটি স্বয়ংক্রিয়ভাবে তৈরি হয়েছিল এবং এর আকার 70 গিগাবাইটের পরিবর্তে 512kb ছিল b তবে এটি কেবল একটি কর্মক্ষেত্র। মূল সমস্যাটির সমাধান হয় না। আমার ক্ষেত্রে আমরা প্রতিলিপি ব্যবহার করছি।


4
এটি মারাত্মক পরামর্শ, আপনার লেনদেনের লগটি কখনই মুছবেন না, দুর্নীতি
টম ভি - টিম মনিকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.