jueves, 19 de febrero de 2015

Crecimiento del tamaño de la base de datos como una lista

Descripción:

Este script de Transact-SQL usa la historia de copias de respaldo para analizar el crecimiento del tamaño de las bases de datos sobre un periodo determinado de tiempo. También se calcula adicionalmente el mínimo, máximo y promedio de crecimiento de tamaño mensual en relación al mes anterior. Estos valores son útiles para el planeamiento futuro de recursos de almacenamiento y sistemas de copias de seguridad. Este script trabaja en Microsoft SQL Server 2005 y versiones superiores en todas las ediciones.


Requerimientos:

  • Este script requiere acceso y permiso de lectura sobre la base de datos del sistema msdb.


Solución:

-- Script T-SQL para analizar el crecimiento de tamaño de la base de datos utilizando la historia de copias de respaldo.
DECLARE @endDate DATETIME, @months smallint;
SET @endDate = GETDATE();    -- Incluir las estadísticas de las copias de respaldo de hoy.
SET @months = 6;            -- hasta 6 meses atrás.

;WITH HIST AS
  
(SELECT BS.database_name AS DatabaseName
          
,YEAR(BS.backup_start_date) * 100
          
+ MONTH(BS.backup_start_date) AS YearMonth
          
,CONVERT(numeric(10, 1), MIN(BF.file_size / 1048576.0)) AS MinSizeMB
          
,CONVERT(numeric(10, 1), MAX(BF.file_size / 1048576.0)) AS MaxSizeMB
          
,CONVERT(numeric(10, 1), AVG(BF.file_size / 1048576.0)) AS AvgSizeMB
    
FROM msdb.dbo.backupset AS BS
        
INNER JOIN
        
msdb.dbo.backupfile AS BF
            
ON BS.backup_set_id = BF.backup_set_id
    
WHERE NOT BS.database_name IN
              
('master', 'msdb', 'model', 'tempdb')
          AND
BF.file_type = 'D'
          
AND BS.backup_start_date BETWEEN DATEADD(mm, - @months, @endDate) AND @endDate
    
GROUP BY BS.database_name
            
,YEAR(BS.backup_start_date)
            ,
MONTH(BS.backup_start_date))SELECT MAIN.DatabaseName
      
,MAIN.YearMonth
      
,MAIN.MinSizeMB
      
,MAIN.MaxSizeMB
      
,MAIN.AvgSizeMB
      
,MAIN.AvgSizeMB
      
- (SELECT TOP 1 SUB.AvgSizeMB
          
FROM HIST AS SUB
          
WHERE SUB.DatabaseName = MAIN.DatabaseName
                
AND SUB.YearMonth < MAIN.YearMonth
          
ORDER BY SUB.YearMonth DESC) AS GrowthMBFROM HIST AS MAINORDER BY MAIN.DatabaseName
        
,MAIN.YearMonth;
GO    



Referencias

No hay comentarios:

Publicar un comentario