[SQL Server] Afficher l'espace mémoire utilisée par chaque base

-- =============================================

-- Author:     Zouhaier KHARROUBI

-- Create date: 20/04/2020

-- Description: Afficher l'espace mémoire utilisée par chaque base

-- =============================================

 

DECLARE @total_buffer INT;

 

SELECT @total_buffer = cntr_value

FROM sys.dm_os_performance_counters

WHERE RTRIM([object_name]) LIKE '%Buffer Manager'

AND counter_name = 'Database Pages';

 

;WITH T1 AS

(

SELECT

database_id, db_buffer_pages = COUNT_BIG(*)

FROM sys.dm_os_buffer_descriptors

--WHERE database_id > 5 

GROUP BY database_id

)

 

SELECT

[db_name] = CASE [database_id] WHEN 32767

THEN 'Resource DB'

ELSE DB_NAME([database_id]) END,

db_buffer_pages,

db_buffer_MB = db_buffer_pages / 128,

db_buffer_percent = CONVERT(DECIMAL(6,3),

db_buffer_pages * 100.0 / @total_buffer)

FROM T1

ORDER BY db_buffer_MB DESC;