Afficher la liste des tables SQL Server avec une requête

Pour afficher la liste des tables SQL Server d’une base de données précise, plusieurs solutions sont possibles. Ainsi, toutes les solutions utilisent les tables systèmes, comme par exemple information_schema.tables , sys.tables, sys.indexes, sys.partitions, sys.allocation_units ou encore sys.schemas. En effet il est utile de lister facilement toutes les tables pour un audit par exemple, qu’il soit technique ou fonctionnel.

 

Afficher la liste des tables SQL Server avec une seule requête

Pour commencer, ces 3 requêtes vous premettent d’aficher les informations de manière différente. La première est une simple liste des tables. Tandis que la deuxième affiche des informations utiles comme la colonne object_id ou encore la date de création et de modifi_cation, soit create_date et modify_date. La troisième requête affiche quand à elle le schéma, le nombre de lignes et l’espace disque utilisé par chaque table.

 

Cet article montre comment créer simplement une table SQL Server et y insérer des lignes.

 

Afficher toutes les tables en utilisant la table information_schema.tables

Utiliser la table information_schema.tables :

select * 
from information_schema.tables
where table_type='base table'

 

Lister les tables en utilisant la table sys.tables

Utiliser la table sys.tables :

select * 
from sys.tables

 

Afficher les tables et leur taille en utilisant plusieurs tables systèmes

Nous pouvons aussi utiliser plusieurs tables système SQL Server comme sys.tables, sys.indexes, sys.partitions, sys.allocation_units et sys.schemas. Ces tables sont utiles pour afficher la liste des tables mais aussi le nombre de lignes dans chaque table et l’espace disque utilisé.

select 
  sch.name as schemaname,
  tab.name as tablename,
  par.rows as rowcounts,
  sum(alc.total_pages) * 8 as total_space,
  sum(alc.used_pages) * 8 as used_space,
  (sum(alc.total_pages) - sum(alc.used_pages)) * 8 as unused_space
from 	sys.tables tab
  inner join sys.indexes ind on tab.object_id = ind.object_id
  inner join sys.partitions par on ind.object_id = par.object_id and ind.index_id = par.index_id
  inner join sys.allocation_units alc on par.partition_id = alc.container_id
  left outer join sys.schemas sch on tab.schema_id = sch.schema_id
group by tab.name, sch.name, par.rows
order by 1,2

 

Note:

  • Le mot clef « Order by 1, 2 » permet de trier par Shéma puis par nom de table.
  • La taille des tables est notée en Kilo-Octets.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*