Puedes hacerlo de esta manera:
-- 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
El último paso es el más complicado. Durante el proceso de reducción, ninguna otra acción debería usar tempdb, ya que esto podría causar un aborto de su SHRINKFILE
operación. Debido al hecho de que tempdb es bastante fácil de reducir, no debería llevar mucho tiempo reducirlo.
Tenga en cuenta que esto es algo así como un "reinicio suave". Todo se eliminará de las memorias intermedias y se escribirá en el disco. Esto significa un impacto en su subsistema de E / S (escritura) ya que tiene que manejar todas las operaciones de escritura. Después de eso, puede reducir el tamaño del archivo (lo que tiene un impacto en el rendimiento de lectura y escritura) y, al final, todos los procesos que consultan cualquier tabla necesitarán recuperar los datos del subsistema de E / S en los buffers. Esto puede doler más que un reinicio.
Si está ejecutando un sistema de desarrollo, debe reiniciar la máquina en lugar de hacerlo. Pero en algunos sistemas de producción sin un socio de conmutación por error, esto puede ser útil.