Requête pour afficher la liste des tables d’une base SQL Server




Pour lister toutes les tables d’une base de données SQL Server, plusieurs solutions sont possibles, toutes les solutions utilisent bien sûr les tables systèmes, comme information_schema.tables , sys.tables, sys.indexes, sys.partitions, sys.allocation_units ou sys.schemas.

 

Afficher la liste de toutes les tables d’une base SQL Server avec une seule requête

Utiliser la table information_schema.tables :

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

 

Utiliser la table sys.tables :

select * 
from sys.tables

 

Ou encore utiliser sys.tables, sys.indexes, sys.partitions, sys.allocation_units et sys.schemas pour afficher la taille des tables ou autres objets :

 

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

 

— A noter : le Order by 1,2,3 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.


*