Anda dapat melakukannya dengan cara ini:
-- 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
Langkah terakhir adalah yang paling sulit. Selama proses menyusut, tidak ada tindakan lain yang harus menggunakan tempdb, karena ini dapat menyebabkan pembatalan SHRINKFILEoperasi Anda . Karena fakta bahwa tempdb cukup mudah menyusut, tidak perlu waktu lama untuk menyusut.
Waspadalah bahwa ini adalah sesuatu seperti "soft restart". Semuanya akan dihapus dari buffer dan ditulis ke disk. Ini berarti dampak pada subsistem I / O Anda (tulis) karena harus menangani semua operasi penulisan. Setelah itu Anda dapat mengecilkan file (yang berdampak pada kinerja baca dan tulis) dan pada akhirnya, semua proses yang meminta tabel apa pun perlu mengambil data kembali dari subsistem I / O ke dalam buffer. Ini mungkin sakit lebih dari restart.
Jika Anda menjalankan sistem pengembangan, Anda harus memulai ulang mesin alih-alih dengan cara ini. Tetapi pada beberapa sistem produksi tanpa mitra failover, ini mungkin berguna.