03 mars 2021

SQL : Compter les objets de la base

Pour découvrir une base de données il est pas mal de compter ce quelle contient. 

Voici la requête que j'utilise :

SELECT *
FROM ( SELECT
  CASE [type] WHEN 'AF' THEN 'Fonction d''agrégation (CLR)'
              WHEN 'C'  THEN 'contrainte CHECK'
      WHEN 'D'  THEN 'DEFAULT (contrainte ou autonome)'
      WHEN 'F'  THEN 'Contrainte FOREIGN KEY'
              WHEN 'FN' THEN 'Fonction scalaire SQL'
              WHEN 'FS' THEN 'Fonction scalaire d''assembly (CLR)'
              WHEN 'FT' THEN 'Fonction table d''assembly (CLR)'
              WHEN 'IF' THEN 'Fonction table en ligne SQL'
              WHEN 'IT' THEN 'Table interne'
              WHEN 'P'  THEN 'Procédure stockée SQL'
              WHEN 'PC' THEN 'Procédure stockée d’assembly (CLR)'
              WHEN 'PG' THEN 'Repère de plan'
              WHEN 'PK' THEN 'Contrainte PRIMARY KEY'
              WHEN 'R'  THEN 'Règle (ancienne, autonome)'
              WHEN 'RF' THEN 'Procédure de filtre de réplication'
              WHEN 'S'  THEN 'Table de base système'
              WHEN 'SN' THEN 'Synonyme'
              WHEN 'SO' THEN 'Objet séquence'
              WHEN 'U'  THEN 'Table (définie par l''utilisateur)'
              WHEN 'V'  THEN 'Vue'
              WHEN 'EC' THEN 'Contrainte Edge'
              WHEN 'SQ' THEN 'File d''attente du service'
              WHEN 'TA' THEN 'Déclencheur d''assembly DML (CLR)'
              WHEN 'TF' THEN 'Fonction table SQL'
              WHEN 'TR' THEN 'Déclencheur DML SQL'
              WHEN 'TT' THEN 'Type de table'
              WHEN 'UQ' THEN 'Contrainte UNIQUE'
              WHEN 'X'  THEN 'Procédure stockée étendue'
              WHEN 'ST' THEN 'Arbre de statistiques (STATS_TREE)'
              WHEN 'ET' THEN 'Table externe'
            ELSE [Type] 
            END AS [Type]
  , COUNT(*) AS Nombre
FROM sys.objects 
GROUP BY [type]
UNION (SELECT 'Colonnes de table', COUNT(*) FROM sys.tables t INNER JOIN sys.columns c ON t.object_id = c.object_id)
UNION (SELECT 'Colonnes de vues', COUNT(*)  FROM sys.views v INNER JOIN sys.columns c ON v.object_id = c.object_id)
UNION (SELECT 'Index ' + i.type_desc, COUNT(*) FROM sys.tables t INNER JOIN sys.indexes i ON t.object_id = i.object_id GROUP BY i.type_desc)
UNION (SELECT 'Trigger ' + g.type_desc, COUNT(*) FROM sys.tables t INNER JOIN sys.triggers g ON t.object_id = g.object_id GROUP BY g.type_desc)
 ) T
 WHERE T.Nombre > 0


Y a pas grand chose à détailler donc juste...
Enjoy !



Aucun commentaire:

Enregistrer un commentaire