Bạn có thể làm theo cách này:
-- 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
Bước cuối cùng là khó khăn nhất. Trong quá trình thu nhỏ, không có hành động nào khác nên sử dụng tempdb, vì điều này có thể gây ra hủy bỏ SHRINKFILEhoạt động của bạn . Do tempdb khá dễ thu nhỏ, nên không mất nhiều thời gian để thu nhỏ nó.
Coi chừng đây là một cái gì đó giống như "khởi động lại mềm". Tất cả mọi thứ sẽ được xóa khỏi bộ đệm và ghi vào đĩa. Điều này có nghĩa là một tác động đến hệ thống con I / O của bạn (ghi) vì nó phải xử lý tất cả các hoạt động ghi. Sau đó, bạn có thể thu nhỏ tệp (có ảnh hưởng đến hiệu suất đọc và ghi) và cuối cùng, tất cả các quy trình truy vấn bất kỳ bảng nào cũng sẽ cần truy xuất dữ liệu từ hệ thống con I / O vào bộ đệm. Điều này có thể làm tổn thương nhiều hơn là khởi động lại.
Nếu bạn đang chạy một hệ thống phát triển, bạn chỉ nên khởi động lại máy thay vì cách này. Nhưng trên một số hệ thống sản xuất không có đối tác chuyển đổi dự phòng, điều này có thể hữu ích.