คุณสามารถทำได้เช่นนี้:
-- 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
ขั้นตอนสุดท้ายนั้นยากที่สุด ในระหว่างกระบวนการย่อขนาดไม่มีการดำเนินการอื่นใดที่ควรใช้ tempdb เนื่องจากอาจทำให้การSHRINKFILEดำเนินการของคุณถูกยกเลิกได้ เนื่องจากความจริงที่ว่า tempdb นั้นค่อนข้างง่ายต่อการหดจึงไม่ควรใช้เวลานานในการย่อขนาด
ระวังว่านี่เป็นสิ่งที่ "soft restart" ทุกอย่างจะถูกลบออกจากบัฟเฟอร์และเขียนไปยังแผ่นดิสก์ นี่หมายถึงผลกระทบต่อระบบย่อย I / O ของคุณ (เขียน) เนื่องจากต้องจัดการการดำเนินการเขียนทั้งหมด หลังจากนั้นคุณสามารถลดขนาดไฟล์ (ซึ่งมีผลต่อประสิทธิภาพการอ่านและเขียน) และในตอนท้ายกระบวนการทั้งหมดที่สืบค้นตารางใด ๆ จะต้องดึงข้อมูลกลับจากระบบย่อย I / O ลงในบัฟเฟอร์ สิ่งนี้อาจเจ็บมากกว่าการรีสตาร์ท
หากคุณใช้ระบบพัฒนาคุณควรรีสตาร์ทเครื่องแทนวิธีนี้ แต่ในบางระบบการผลิตที่ไม่มีพันธมิตรล้มเหลวนี่อาจเป็นประโยชน์