Récupérer la taille d’une base de données

ll existe différentes techniques pour récupérer la taille d’une base de données. Je vous en livre ici une que j’utilise. Elle se base sur la vue système sys.database_files qui nous renseigne sur les fichiers de la base de données.

SELECT dbname, [ROWS]*8 as Donnees, [LOG]*8 as Journaux
FROM
   (SELECT DB_NAME() as dbname, type_desc, size
   FROM sys.database_files) as p
PIVOT
   (SUM(size) FOR type_desc IN ([ROWS], [LOG])) as pvt

Grâce à la fonction PIVOT, j’aggrège les fichiers de données et journaux. Vous noterez aussi que je multiplie la taille par 8 car la valeur de cette vue correspond à un nombre de pages (8KB). Nous obtenons donc une taille en kilo-octets.

Pour connaître les tailles de toutes les bases de données d’un serveur, on peut utiliser se script combiné avec la fonction système sp_MSforeachDB

CREATE TABLE #TMP_DB_Sizes (
  dbname sysname,
  datasizeinkb int,
  logsizeinkb int)

EXECUTE sp_msforeachdb '
INSERT INTO #TMP_DB_Sizes
SELECT dbname, [ROWS]*8 as Donnees, [LOG]*8 as Journaux
FROM
   (SELECT ''[?]'' as dbname, type_desc, size
   FROM [?].sys.database_files) as p
PIVOT
   (SUM(size) FOR type_desc IN ([ROWS], [LOG])) as pvt'

select * from #TMP_DB_Sizes

drop table #TMP_DB_Sizes

J’utilise une table temporaire pour n’avoir qu’un jeu de résultat. Vous noterez l’utilisation de ‘[?]’ pour injecter le nom de la base en cours dans le script

Il existe bien évidemment d’autres solutions, venant de 2000 ou de 2005, certaines apportant d’autres informations comme le pourcentage d’espace inutilisé.

Bon audit !!

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s