Saltar al contenido

Diario de un DBA

Problemas y soluciones para SQL Server

Menú
  • Inicio
  • Consultoria gratuita
  • tempdb
  • Curso Azure DP-300
  • Rendimiento
  • Seguridad
  • Sobre Mi
Menú

SQL Server – Shrink a la TempDB no libera espacio

Publicada el agosto 5, 2022junio 29, 2024 por solracamo

Contenido del post:

Toggle
  • Liberar espacio en la TempDB sin reiniciar la instancia
    • Script para limpiar la caché y hacer un shrink a la tempDB.
  • ¿Todavía tienes dudas?

Hacer un shrink a la tempDB y que no libere espacio es uno de los problemas más frustrantes que puedes sufrir como DBA de SQL server.

Todo suele comenzar con una alerta por un disco que se está llenando rápidamente y, al comprobar su contenido, resulta que contiene los archivos de datos de la TempDB.

Normalmente esto ocurre porque algún proceso está haciendo trabajar en exceso a esta base de datos, provocando su crecimiento. Nuestro primer paso será informar al cliente sobre el problema para que haga saber a sus desarrolladores que deben detener el proceso antes de que la TempDB se llene por completo, ya que si esto ocurre, la instancia dejará de funcionar.

Sobre cómo proceder a partir de aquí, hay muchas opiniones. Algunos prefieren no hacer shrink a la TempDB por temor a causar corrupción, pero esto ya no ocurre, por lo que estamos a salvo. Intentaremos hacer un shrink de forma normal y, aunque vemos que el archivo está 99% libre, el shrink no reduce el espacio consumido.

Si nos encontramos en este punto y el equipo de Windows/almacenamiento nos ha dicho que no se puede pedir espacio extra en el disco, nuestra única solución sería reiniciar la instancia… ¿o no?

Liberar espacio en la TempDB sin reiniciar la instancia

Ya hemos intentado hacer el shrink pero no ha funcionado. Antes de reiniciar la instancia, podemos llevar a cabo un proceso un poco más «fuerte» que puede evitar el reinicio (y lo que esto conlleva).

Lo que haremos será limpiar las memorias cachés, hacer un par de checkpoints y luego volver a hacer un shrink. Limpiar las cachés puede hacer que ciertos procesos tomen más tiempo en sus siguientes ejecuciones, pero reiniciar la instancia también borraría la caché, por lo que realmente no estamos evitando nada que no fuese a ocurrir igualmente.

Script para limpiar la caché y hacer un shrink a la tempDB.

A continuación, dejo el script que uso cuando tengo este problema. Podéis ejecutarlo por partes o todo del tirón.

CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
DBCC FREEPROCCACHE;
GO
DBCC FREESYSTEMCACHE ('ALL');
GO
DBCC FREESESSIONCACHE;
GO
CHECKPOINT;
GO

Una vez ejecutado, volved a realizar el shrink. Esta vez, con suerte, el resultado será distinto.

Espero que os haya servido y recordad, no dejéis que los desarrolladores metan las manos donde no deben.

¿Todavía tienes dudas?

Si este post no ha solucionado tu problema o todavía tienes dudas sobre este o cualquier otro asunto relacionado con SQL Server, puedes enviarme un mensaje o solicitar una consultoría gratuita haciendo clic aquí.

6 comentarios en «SQL Server – Shrink a la TempDB no libera espacio»

  1. Pingback: 💻SQL Server - Cómo saber el espacio que puedo liberar haciendo un shrink - Diario de un DBA
  2. Pingback: Cómo mover la tempdb a otro disco - Diario de un DBA
  3. Alfosno dice:
    noviembre 30, 2023 a las 9:25 pm

    Hola, Me sirvio Muchas Gracias Exitos!!

    Responder
    1. solracamo dice:
      diciembre 27, 2023 a las 10:42 pm

      Me alegro! Me has alegrado el dia con tu comentario 😀

      Responder
  4. Alberto dice:
    marzo 26, 2024 a las 6:59 pm

    me ha ayudado bastante, muchas gracias

    Responder
    1. solracamo dice:
      marzo 26, 2024 a las 7:01 pm

      Me alegro mucho!

      Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Consultoria Gratis

¿Tienes un problema o una consulta sobre tu servidor SQL Server? ¿Necesitas hacer algún tipo de mantenimiento o tarea en tu instancia, pero no tienes claro cómo hacerlo?

Envíame un email con tu caso y te contestaré lo antes posible de forma totalmente gratuita.

Puedes utilizar el formulario que encontrarás haciendo click aquí.

Sobre mi

Efectivamente, soy un muñeco de slack con la camiseta de Fernando Alonso en Renault, pero también soy una DBA mid level que vive y trabaja en inglaterra como consultor SQL Server.

El objetivo de este blog es escribir los problemas con los que me he ido encontrando y cómo los solucioné. Si estas soluciones han servido para mí, es posible que también lo hagan para ti, ¿no?

Otras soluciones

  • Recuperar la password de la cuenta SA en SQL Serveroctubre 5, 2024
  • Always On en SQL Server. Todo lo que necesitas saberagosto 24, 2024
  • Recuperar una tabla borrada en SQL Serveragosto 18, 2024
  • Mover bases de datos a otro disco en SQL Serveragosto 11, 2024
  • Comprobar los últimos backups tomados en una instancia SQL Serverjunio 29, 2024
  • Comprobar fragmentación en SQL Serverjunio 23, 2024

Curso Azure DP-300 Gratis

  • Azure DP-300 curso en Español – Parte 1noviembre 17, 2022
  • Crear una máquina virtual con SQL server en Azurenoviembre 17, 2022
  • Crear un servidor SQL Server en Azure.noviembre 22, 2022
  • Azure DP-300 curso en Español – Parte 2noviembre 24, 2022
  • Azure DP-300 curso en Español – Parte 3diciembre 1, 2022
  • Azure DP-300 curso en Español – Parte 4diciembre 14, 2022

Consulta las páginas que nadie consulta:
Privacidad
Cookies

Escríbeme!
Contacto

© 2025 Diario de un DBA