Comprendre la Taille de Vos Bases de Données SQL Server

Dans le monde de la gestion des bases de données, une question fréquente se pose : Comment puis-je déterminer la taille totale de toutes les bases de données dans SQL Server ? Cette tâche est essentielle pour les administrateurs de bases de données qui doivent gérer l’espace et les ressources de manière efficace. Que vous souhaitiez surveiller la croissance des bases de données, planifier la capacité ou simplement suivre l’utilisation du stockage, connaître la taille de vos bases de données SQL Server est crucial.

SQL Server offre un moyen simple de mettre en évidence la taille totale et l’utilisation de vos bases de données. Ci-dessous, nous allons vous guider à travers une procédure stockée que vous pouvez mettre en œuvre pour obtenir une vue complète de l’espace occupé par vos bases de données SQL Server, spécifiquement applicable pour les versions jusqu’à SQL Server 2008.

La Solution : Une Procédure Stockée

Pour trouver les tailles des bases de données, nous allons créer une procédure stockée qui résume l’espace total utilisé, l’espace disponible et fournit des informations essentielles sur les fichiers de données et de journal de chaque base de données. Décomposons cela étape par étape.

Étape 1 : Configuration de la Procédure Stockée

Voici comment vous pouvez créer une procédure stockée nommée sp_SDS pour résumer les tailles des bases de données :

USE master;
GO

IF OBJECT_ID('dbo.sp_SDS', 'P') IS NOT NULL
  DROP PROCEDURE dbo.sp_SDS;
GO

CREATE PROCEDURE dbo.sp_SDS 
  @TargetDatabase sysname = NULL,     --  NULL : toutes les dbs
  @Level varchar(10) = 'Database',    -- Options : "Database", "File"
  @UpdateUsage bit = 0,               -- Par défaut pas de mise à jour
  @Unit char(2) = 'MB'                -- Unités : Mégaoctets, Ko, Go
AS

Étape 2 : Configuration Initiale

À l’intérieur de la procédure stockée, nous effectuons des vérifications initiales et créons des tables temporaires pour contenir les informations sur les bases de données :

  • Vérification de la Base de Données Cible : Si une base de données spécifique est demandée, nous garantissons qu’elle existe.
  • Création des Tables Temporaires : Nous créons des tables pour stocker les statistiques des bases de données, y compris la taille totale, l’espace utilisé et l’espace libre.

Étape 3 : Rassembler les Informations sur les Bases de Données

Nous allons ensuite rassembler des détails sur les bases de données dans notre SQL Server. Les éléments clés que nous allons capturer incluent :

  • Nom de la Base de Données
  • Type (Données ou Journal)
  • Nom Logique
  • Taille Totale
  • Taille Utilisée et Espace Libre

Voici comment nous récupérons ces données :

SELECT 
  @String = 'INSERT INTO dbo.##Tbl_CombinedInfo (DatabaseName, type, LogicalName, PhysicalName, T) '
  + 'SELECT DB_NAME(), {...} FROM sysfiles WHERE DB_NAME() = @DatabaseName';
EXEC (@String);

Étape 4 : Calcul des Tailles

Après avoir rassemblé les données requises, nous effectuons des calculs pour déterminer les pourcentages d’espace utilisé et libre :

  • Mise à jour de l’espace utilisé en fonction des étendues de chaque fichier.
  • Calcul du pourcentage d’espace utilisé et libre pour les fichiers de données et de journal.

Étape 5 : Affichage des Résultats

Enfin, nous sélectionnons et présentons les informations calculées à l’utilisateur :

SELECT DatabaseName AS 'Database',
  type AS 'Type',
  T AS 'Total',
  U AS 'Used',
  [U(%)] AS 'Used (%)',
  F AS 'Free',
  [F(%)] AS 'Free (%)',
  PhysicalName
FROM dbo.##Tbl_CombinedInfo 
WHERE DatabaseName LIKE ISNULL(@TargetDatabase, '%') 
ORDER BY DatabaseName ASC, type ASC;

Exemple d’Exécution

Pour exécuter cette procédure stockée, il vous suffit de l’appeler comme ceci :

EXEC dbo.sp_SDS;

Vous pouvez également cibler une base de données spécifique ou ajuster les unités pour la sortie :

EXEC dbo.sp_SDS 'nom_de_votre_base_de_données', 'Database', 1, 'GB';

Conclusion

Connaître la taille de vos bases de données SQL Server non seulement aide à une planification de capacité efficace, mais améliore également votre stratégie globale de gestion des bases de données. En implémentant la procédure stockée fournie, vous pouvez recueillir efficacement des informations concernant vos bases de données SQL Server, garantissant ainsi des performances optimales et une allocation des ressources appropriée.

N’hésitez pas à partager vos expériences ou les ajustements que vous avez effectués sur le script pour vos besoins spécifiques !