Visualiser les événements de croissances de fichier d’une base

La requête suivante interroge la trace du profiler par défaut pour connaître les événements de croissance de fichiers.


-- variables locales  
   DECLARE @TRACE_COURANTE NVARCHAR(800),  
           @TRACE_GENERIQUE NVARCHAR(800),  
           @I INT;  
-- récupération du chemin du fichier dans lequel se trouve les fichiers de trace locale  
-- ils sont en général dans [DISQUE INSTALLATION]:\Program Files\Microsoft SQL Server\[INSTANCE]\MSSQL\Log\  
   SELECT @TRACE_COURANTE = path  
   FROM   sys.traces  
   WHERE  is_default = 1 ;  
   SET @TRACE_COURANTE = REVERSE(@TRACE_COURANTE);  
   SET @I  = PATINDEX('%\%', @TRACE_COURANTE) ;  
   SET @TRACE_COURANTE = REVERSE(@TRACE_COURANTE) ;  
   SET @TRACE_GENERIQUE = LEFT( @TRACE_COURANTE, LEN(@TRACE_COURANTE) - @I) + '\log.trc' ;    
-- requête montrant les opérations de croissance des fichiers  
   SELECT DatabaseName AS NOM_BASE,  
          TE.name AS NOM_EVENEMENT,  
          Filename AS FICHIER,  
          (Duration/1000) AS DUREE_MS,  
          StartTime AS DEBUT,  
          EndTime AS FIN,  
          CAST((IntegerData*8) AS DECIMAL(16,0)) AS INCREMENT_KO,  
          CAST(SUM(IntegerData*8.0/1024) OVER(PARTITION BY DatabaseName, Filename) AS DECIMAL(16,3)) AS TOTAL_INCREMENT_FB_MO,  
          CAST((SUM(Duration) OVER(PARTITION BY DatabaseName, Filename)) / 1000000.0 AS DECIMAL(16,2)) AS TOTAL_DUREE_FB_S,
          CAST(SUM(IntegerData*8.0/1024) OVER(PARTITION BY DatabaseName) AS DECIMAL(16,3)) AS TOTAL_INCREMENT_DB_MO,  
          CAST((SUM(Duration) OVER(PARTITION BY DatabaseName)) / 1000000.0 AS DECIMAL(16,2)) AS TOTAL_DUREE_DB_S            
   FROM   sys.fn_trace_gettable(@TRACE_GENERIQUE, DEFAULT) AS T  
          INNER JOIN sys.trace_events AS TE  
                ON T.EventClass = TE.trace_event_id  
   WHERE  EventClass BETWEEN  92 AND 95          
          AND ServerName = @@servername  
-- la trace par défaut est-elle activée ?            
          AND EXISTS(SELECT *  
                     FROM   sys.configurations  
                     WHERE  name = 'default trace enabled'  
                            AND  CAST(value_in_use AS INT) = 1)  
   ORDER  BY DatabaseName, StartTime DESC;

--------
Frédéric Brouard, SQLpro - ARCHITECTE DE DONNÉES, http://sqlpro.developpez.com/
Expert bases de données relationnelles et langage SQL. MVP Microsoft SQL Server
www.sqlspot.com : modélisation, conseil, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence  * * * * *

MVP Microsoft SQL Server

Laisser un commentaire