এসকিউএল সার্ভার পুনরায় চালু না করে টেম্পিডবি.এমডিএফ আকার হ্রাস / সঙ্কুচিত করার কোনও উপায় আছে কি?


15

পরে SQL সার্ভার পুনরায় আরম্ভ করা জরুরী DBCC SHRINKFILEউপর tempdb.mdfবা অন্য কোন আকার হ্রাস করুন পদ্ধতি tempdb.mdfSQL সার্ভার পুনরায় চালু ছাড়া?

প্রযোজনা সার্ভারের জন্য আমার এটি যেমন প্রয়োজন তেমন দয়া করে সহায়তা করুন এবং আমি আশা করি কোনও কম সময় ছাড়াই সঙ্কুচিত করতে চাই।


2
ডিবিসিসি শ্রিনকফিলকে পরিষেবা পুনঃসূচনা করার দরকার নেই।
গ্রেগ

আপনি যেমন টেম্পডিবিটি ব্যবহার করছেন তেমন সঙ্কুচিত করতে পারবেন না। এবং হ্যাঁ এর জন্য এর কিছু সমাধান রয়েছে তবে এটি খুব পরিষ্কার নয় এবং এর কিছু পার্শ্ব প্রতিক্রিয়াও রয়েছে।
আয়নিক

উত্তর:


15

আপনি এইভাবে এটি করতে পারেন:

-- write everything from your buffers to the disc!
CHECKPOINT; 
GO
-- Clean all buffers and caches
DBCC DROPCLEANBUFFERS; 
DBCC FREEPROCCACHE;
DBCC FREESYSTEMCACHE('ALL');
DBCC FREESESSIONCACHE;
GO
-- Now shrink the file to your desired size
DBCC SHRINKFILE (TEMPDEV, 40960);
-- Make sure that there is no running transaction which uses the tempdb while shrinking!
-- This is most trickiest part of it all.
GO

শেষ পদক্ষেপটি সবচেয়ে কৌশলযুক্ত। সঙ্কুচিত প্রক্রিয়া চলাকালীন, অন্য কোনও পদক্ষেপে টেম্পিডবি ব্যবহার করা উচিত নয়, কারণ এটি আপনার SHRINKFILEক্রিয়াকলাপকে বাতিল করতে পারে । টেম্পিডবিটি সঙ্কুচিত করা বেশ সহজ, এই কারণে এটি সঙ্কুচিত হতে খুব বেশি সময় নেওয়া উচিত নয়।

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

আপনি যদি কোনও উন্নয়ন সিস্টেম চালাচ্ছেন তবে আপনার কেবল এই পদ্ধতিটির পরিবর্তে মেশিনটি পুনরায় চালু করা উচিত। তবে ব্যর্থ অংশীদার ছাড়া কিছু উত্পাদন সিস্টেমে এটি কার্যকর হতে পারে।


আয়নিক ধন্যবাদ সুন্দর ব্যাখ্যা জন্য। tempdb.mdf আমার ক্ষেত্রে 46 গিগাবাইটের। যদি কোনও লেনদেন না চলছে তবে আমি কি এটি 100% এ সঙ্কুচিত করতে পারি? দয়া করে পরামর্শ দিন।
মানিই

হ্যাঁ 40960MB কেবল একটি উদাহরণ। আমার সিস্টেমে টেম্পিডবিটি স্বাভাবিকভাবে ~ 50 গিগাবাইটে চলে এবং বিরল ক্ষেত্রে 200 গিগাবাইটে বেড়ে যায়। :-)
আয়নিক

<pre> আমি ডিবিসিসি শ্রিনকিফিল (টেম্পদেব, 1024) হিসাবে ক্যোয়ারী চালাচ্ছি; </ b> </ b> এবং এটি স্থানটি সাফল্যের সাথে মুক্ত করে ফেলল তবে আমি আবার এটি চালিয়েছি </ b> </ b> ডিবিসিসি শ্রিনকিফিল (টেম্পদেব, ৩০০০০); </ b> </ b> এবং এটি আমাকে নীচে ফলাফল দিয়েছে: </ b> <B> ডিবিআইডি ফিল্ড বর্তমান আকার ন্যূনতম আকারের ব্যবহৃত পৃষ্ঠাগুলি অনুমান পৃষ্ঠাগুলি </ b> 2 1 5699352 1024 696 696 </b> </ b> তবে পরীক্ষিত হিসাবে tempdb আকার হ্রাস করা হয়নি </ </
translation

এই বার্তাটি যদি সংকুচিত হওয়ার সময় টেম্পিডবি ব্যবহার করে তবেই ঘটতে পারে occur এটিও হতে পারে যে আপনার সংজ্ঞায়িত সঙ্কুচিত আকার (GB 30 গিগাবাইট) আপনার টেম্পডিবির নিখরচায় সীমার উপরে।
আয়নিক

1

আপনি কেবল নীচের পদক্ষেপের সাথে যেতে পারেন

USE tempdb;
GO;
dbcc freeproccache;
DBCC SHRINKFILE (tempdb_file_name, memory_in_MB);
GO;

আপনার উত্তরটি উপরের উত্তরটির চেয়ে আলাদা কীভাবে?
কিন শাহ

1
হ্যালো কিন, টেম্পডিবি ফাইলের আকার হ্রাস হবে ডিবিসিসি ফ্রিপ্রোকাচেকে; এবং তারপরে টেম্পিডবি ফাইলটি সঙ্কুচিত করুন। সঙ্কুচিত টেম্পডিবি জন্য আমাদের নীচের বিবৃতি প্রয়োজন নেই। ডিবিসিসি ড্রপক্লেইনবুফার্স; ডিবিসিসি ফ্রিস্টেমক্যাচ ('সমস্ত'); ডিবিসিসির বিনামূল্যে
জেরি

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