lunes, 26 de enero de 2015

Limpieza del Historial de Backups

SQL Server mantiene un historial de todos los Backups y Restore que se han hecho en el sistema. Nuestra organización realiza copias de seguridad y restaura con frecuencia y debido a esto nuestra Base de Datos msdb puede llegar a ser muy grande.
Como puedo purgar algunos de estos datos y liberar espacio en la Base de Datos?
Solución:
Son mantenimiento regular, las tablas del sistema puede crecer a tamaños muy grandes que conducen a un tamaño total grande para la Base de Datos msdb.
Estas tablas msdb incluyen:
backupfile
backupfilegroup
backupmediafamily
backupmediaset
backupset
retorefile
restorefilegroup

USE msdb;
GO
DECLARE @v_MaxDateHistory DATETIME
SET @v_MaxDateHistory = CONVERT(DATETIME,CONVERT(VARCHAR,DATEADD(MONTH,-3,GETDATE()),112))
EXEC sp_delete_backuphistory @v_MaxDateHistory;
GO

Debido a que los índices no son los apropiados en estas tablas, el procedimiento almacenado toma mucho tiempo en completarse ¿Cuál es la solución? Estos índices aceleran el proceso:
CREATE INDEX [media_set_id] ON [dbo].[backupset] ([media_set_id]);
CREATE INDEX [restore_history_id] ON [dbo].[restorefile] ([restore_history_id]);
CREATE INDEX [restore_history_id] ON [dbo].[restorefilegroup] ([restore_history_id]);

Para comparar:
SELECT count (*) FROM restorefile;
SELECT count (*) FROM restorefilegroup;
SELECT count (*) FROM restorehistory;
SELECT count (*) FROM backupfile;
SELECT count (*) FROM backupset;
SELECT count (*) FROM backupmediafamily;

SELECT count (*) FROM backupmediaset;

No hay comentarios:

Publicar un comentario