তাত্ক্ষণিকভাবে সদৃশ হিসাবে চিহ্নিত করার আগে , আমি মাইক ওয়ালশের পড়া পড়েছি কেন কেন লেনদেন লগ বাড়তে থাকে বা স্থানের বাইরে চলে যায়? , তবে আমি মনে করি না এটি আমার পরিস্থিতির কোনও উত্তর দিয়েছে। আমি এক ডজন বা অনুরূপ প্রশ্নগুলির মধ্য দিয়ে দেখেছি, তবে প্রাসঙ্গিক প্রশ্নগুলি কেবল "নকল" বলেছে এবং মাইকের প্রশ্নের দিকে ইঙ্গিত করেছে।
বিশদ: আমার কাছে এসকিউএল সার্ভার ২০০৮ আর 2-তে ~ 200 এমবি ডেটা ফাইল এবং ~ 300 এমবি লগ ফাইল সহ সমস্ত সিম্পল পুনরুদ্ধার মোডে (আমার পছন্দ নয়), রাত্রে পুরো ব্যাকআপ রয়েছে a 500 এমবি ডাটাবেস। লগটি তাত্ক্ষণিকভাবে 300MB তে বাড়বে না, বরং কয়েক মাসের ব্যবধানে ধীরে ধীরে। কমপক্ষে sp_Wo2 এবং ক্রিয়াকলাপের মনিটরের অনুসারে তাদের কোনওটিতে কোনও লেনদেন নেই। আমি যদি ডাটাবেসে ডান-ক্লিক করি এবং বৈশিষ্ট্যগুলি নির্বাচন করি তবে এটি আমাকে বলে tells 50MB বিনামূল্যে। বিশেষত ব্যাকআপের ঠিক পরে, পুরো লগটি কি বিনামূল্যে রাখা উচিত নয়? সিম্পল মোডে লগটি যতক্ষণ না খোলা লেনদেন না হওয়া উচিত তা বিনামূল্যে হওয়া উচিত নয়?
log_reuse_wait_desc
থেকে sys.databases
"নাথিং" বলেছে, যা উপরে উল্লিখিত প্রশ্নোত্তরের ভিত্তিতে বলেছে যে স্থানটি পুনরায় ব্যবহার করার জন্য কোনও কিছুর জন্য অপেক্ষা করা উচিত নয়।
আমি যদি 'ডিবিসিসি শ্রিনকফিল' করি, লগ ফাইলটি 1 এমবিতে সঙ্কুচিত হয়, তাই এটি স্থানটি পুনরায় দাবি করতে রাজি। আমি এমন কিছু সেট আপ করতে পারি যা সাপ্তাহিক লগগুলিকে সঙ্কুচিত করে এবং নিয়ন্ত্রণ থেকে বেরিয়ে আসা থেকে বাঁচায় তবে এসকিউএল সার্ভার কেন আমাকে তা করতে বাধ্য করবে তা নিয়ে আমি বিভ্রান্ত।
আমি বুঝতে পারি যে এখানে কিছু ক্রেজি লেনদেন হয়েছে যা এটিতে লগ করার জন্য 300 এমবি দরকার ছিল, তবে আমরা চূড়ান্ত কিছু করছি না, কেবলমাত্র বেসিক ওলটিপি। মাইকের প্রশ্ন / উত্তর থেকে:
সরল রিকভারি মডেল - সুতরাং উপরোক্ত ভূমিকাটির সাথে প্রথমে সরল রিকভারি মডেল সম্পর্কে কথা বলা সবচেয়ে সহজ। এই মডেলটিতে, আপনি এসকিউএল সার্ভারকে বলছেন - ক্র্যাশ এবং পুনরুদ্ধার পুনরুদ্ধারের জন্য আপনার লেনদেনের লগ ফাইলটি ব্যবহার করার সাথে আমি ভাল আছি (আপনার সত্যিকারের কোনও পছন্দ নেই .. এসিডি বৈশিষ্ট্যগুলি দেখুন এবং এটি দ্রুত বোঝা উচিত) তবে একবার আপনি না ক্র্যাশ / পুনরুদ্ধার পুনরুদ্ধারের উদ্দেশ্যে পুনরায় আরম্ভ করার প্রয়োজন নেই, এগিয়ে যান এবং লগ ফাইলটি পুনরায় ব্যবহার করুন।
এসকিউএল সার্ভার সাধারণ অনুরোধে এই অনুরোধটি শোনায় এবং ক্র্যাশ / পুনরুদ্ধার পুনরুদ্ধার করার জন্য এটি কেবল প্রয়োজনীয় তথ্য রাখে। এসকিউএল সার্ভার একবার নিশ্চিত হয়ে উঠেছে যে এটি পুনরুদ্ধার করতে পারে কারণ ডেটা ফাইল ফাইলে আরও শক্ত হয়ে যায় (আরও কম), ডেটা যে শক্ত হয়ে গিয়েছিল তা আর লগের প্রয়োজন হয় না এবং কাটা কাটার জন্য চিহ্নিত করা হয় - যার অর্থ এটি পুনরায় ব্যবহৃত হয়।
এটি বলছে যে লগ স্পেসটি পুনরায় ব্যবহার করা উচিত, তবে কয়েক মাস ধরে এই ধীর গতিতে, মনে হয় না এটি এটি।
আমি কী মিস করছি? কিছু কি এসকিউএল সার্ভারকে ডেটাটিকে "শক্ত" হিসাবে স্বীকৃতি এবং লগটি মুক্ত করার হাত থেকে রক্ষা করছে?
(সম্পাদনা) অ্যাকশন রিপোর্টের পরে - একে একে সামান্য জ্ঞান বিপদজনক
এটি একটি "জনপ্রিয় প্রশ্ন" হিসাবে আবিষ্কার করার পরে, মনে হয়েছিল যে আমি 7 মাস আগে কী ঘটেছিল এবং আমি আশা করি যে আরও কিছু লোককে কিছুটা দুঃখ বাঁচাতে শিখেছি তার একটি ব্যাখ্যা আমার কাছে ধার্য ছিল।
প্রথমে, যখন আপনি একটি ডাটাবেসে বৈশিষ্ট্য দেখেন তখন এসএসএমএসে আপনি যে স্থানটি দেখতে পাচ্ছেন তা হ'ল ডেটা ফাইলের মধ্যে স্থান। আপনি এটি ডাটাবেসে নিম্নলিখিতটি চালিয়ে দেখতে পারেন এবং এসএসএমএস দ্বারা রিপোর্ট করা স্থানটি ফাইলসাইজএমবি এবং ব্যবহৃতস্পেসএমবি এর মধ্যে পার্থক্যটি পেয়ে যাবেন:
SELECT
DB.name,
MF.physical_name,
MF.type_desc AS FileType,
MF.size * 8 / 1024 AS FileSizeMB,
fileproperty(MF.name, 'SpaceUsed') * 8/ 1024 AS UsedSpaceMB,
mf.name LogicalName
FROM
sys.master_files MF
JOIN sys.databases DB ON DB.database_id = MF.database_id
WHERE DB.name = 'yourdatabasename'
এটি নিশ্চিত করেছে যে সাধারণ পরিস্থিতিতে আমরা খুব অল্প লগ স্পেস (২০ এমবি বা তার চেয়ে কম) ব্যবহার করছিলাম তবে এটি দ্বিতীয় আইটেমের দিকে নিয়ে যায় ...
দ্বিতীয়ত, লগগুলির ক্রমবর্ধমান সম্পর্কে আমার ধারণাগুলি সময়ের সাথে ধীরে ধীরে ছিল। তবে, বাস্তবে এই তৃতীয় পক্ষের অ্যাপ্লিকেশনটির জন্য প্যাচ প্রয়োগ করার জন্য দায়ী ব্যক্তি প্যাচগুলি প্রয়োগ করার জন্য রাত্রে লগগুলি দ্রুত বাড়ছিল। প্যাচটি একটি একক লেনদেন হিসাবে করা হয়েছিল, সুতরাং প্যাচের উপর নির্ভর করে 200MB ডেটা 300MB লগের প্রয়োজন। এটি নিখুঁত করার মূল কীটি ছিল https://sqlblog.org/2007/01/11/reviewing-autogrow-events-from-the-default-trace এ অ্যারন বার্ট্র্যান্ডের প্রশ্নের
DECLARE @path NVARCHAR(260);
SELECT
@path = REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX('\', REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT
DatabaseName,
[FileName],
SPID,
Duration,
StartTime,
EndTime,
FileType = CASE EventClass
WHEN 92 THEN 'Data'
WHEN 93 THEN 'Log'
END
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE
EventClass IN (92,93)
ORDER BY
StartTime DESC;
এটি দেখায় যে কোনও নির্দিষ্ট সন্ধ্যায় লগ বাড়তে থাকে, যখন গ্রাহক ডাটাবেস ব্যবহার করেন না। এটি প্যাচগুলি প্রয়োগ করে এবং রহস্যের উত্তরটি দিয়ে লোকটির সাথে কথোপকথনের দিকে পরিচালিত করে।
যারা আমাকে উত্তরটি পেতে সহায়তা করেছেন তাদের জন্য আবার ধন্যবাদ