sábado, 21 de septiembre de 2019

Tamaño enorme de MSDB SQL SERVER

Muchas veces nos encontramos que una base de datos de sistema llamada msdb creció de manera exponencial y no sabemos porqué, es más, no sabemos para que sirve esa base de datos. Pues bien, aquí vamos a explicar que es esa base de datos, porque se llena tanto y que hacer para poder purgarla.

La base de datos msdb es una base de datos del sistema SQL SERVER, que se utiliza principalmente para la opciones del agente, en ella se guardan los correos electrónicos enviados, el historial de los jobs, los operadores, las alertas, etc, pero también se guarda información importante como historial de respaldos, por lo que el mantenimiento y respaldo de esta base de datos es muy importante.



Podemos encontrar esa base de datos aquí


Esta base de datos se puede llenar por varias razones, pero la más común es que se llene por el historial de correos enviados desde el agente o bien por el historial de los trabajos (jobs) que tiene el agente.

En este ejemplo, podemos ver que la base de datos msdb pesa casi 10 GB como se muestra en la imagen.


con el procedimiento de sistema 
use msdb
go
exec dbo.sp_help_jobhistory
 

 podemos ver el historial de todos los jobs

El resultado de esa consulta regresara algo similar a esto


 Si nunca se ha depurado el historial, es muy posible que esa sea la razón por la cual esa base de datos esta tan pesada.

Para eso vamos a ejecutar el siguiente comando:

use msdb
go
exec sp_purge_jobhistory

Con este procedimiento, vamos a limpiar todo el historial de los jobs, ese procedimiento recibe parámetros, si no se le manda ningún parámetro como es el caso, entonces procederá a dejar vacío todo el historial de todos los jobs

Los parámetros que podría recibir son tres:



Al momento de ejecutar el query, nos devolverá algo como esto:


Ahora solo faltaría realizar un Shrink Database a la base msdb para que el tamaño quede reducido


Una vez realizado lo anterior, revisaremos el tamaño de la base msdb, como veremos en la siguiente imagen:


Como ven, la base de datos msdb quedó vacía correctamente, se puede dar el caso, que aun la base siga estando muy pesada, en ese caso se tendría que hacer lo mismo con los correos.

exec dbo.sysmail_delete_mailitems_sp

También esta función puede recibir dos parámetros


Hasta aquí el post, espero que les haya servido. Cualquier duda, pregunten. Den clic a algún anuncio que les interese, sería de gran ayuda para mí.

Saludos
 

 
 

No hay comentarios.:

Publicar un comentario

Sinónimos de palabras similares en SQL SERVER

Buenas tardes. Hace un tiempo publique un post que hablaba sobre Sinónimos en SQL SERVER, sin embargo trataba de sinónimos en en objetos, e...