3 exemples de requêtes pour afficher la liste des tables dans une base SQL Server.
Pour auditer une base de données SQL Server, établir une liste des tables est une étape importante, voire obligatoire. Il est courant de vouloir cette liste sous forme de tableau ou de feuille Excel.
Cette requête SQL permet de lister toutes les tables d’une base de données SQL Server et d’afficher le nombre de lignes et la taille pour chaque table. Les développeurs SQL Server cherchent également souvent des tables, par exemple pour une analyse d’impact.
Il est donc utile de lister rapidement toutes les tables pour un audit technique, fonctionnel ou encore réglementaire. Pour commencer, ces 3 différentes requêtes T-SQL permettent d’afficher les informations de différentes manières, et avec différents niveaux de détails.
- La première est une simple liste des tables.
- La deuxième requête affiche des informations telles que les colonnes object_id, create_date et modify_date.
- Enfin, la troisième affiche le schéma, le nombre de lignes et l’espace disque utilisé par chaque table.
En effet, les tables système SQL Server et les vues système contiennent des métadonnées qui décrivent les différents objets dans la base de données. Ainsi, toutes les solutions présentées dans cet article utilisent des tables ou des vues système, telles que :
- information_schema.tables
- sys.tables
- sys.indexes
- sys.partitions
- sys.allocation_units
- ou sys.schemas
1. Afficher une liste de toutes les tables avec une seule requête
Dans SQL Server, information_schema.table est une vue, pas une table. C’est l’une des vues INFORMATION_SCHEMA standardisées par l’ISO pour les systèmes de gestion de bases de données relationnelles (SGBDR).
Cette vue fournit des informations sur les tables et les vues présentes dans une base de données. Par exemple, vous pouvez simplement utiliser la table système information_schema.table, comme ceci :
SELECT * FROM information_schema.tables WHERE table_type='BASE TABLE';

2. Requête SQL Server pour lister les objets avec sys.tables
Vous pouvez également utiliser la table système sys.tables. Le résultat de la requête montre que le type de table stockée dans la colonne type_desc est USER_TABLE.
Sys.tables en Transact-SQL est également une vue système et non une table.
Elle fait partie du catalogue système SQL Server et fournit des informations sur toutes les tables utilisateur et les tables système existantes dans une base. Elle peut être utilisée pour récupérer divers détails et métadonnées sur les tables, tels que leur nom, date de création, date de modification, etc.
SELECT * FROM sys.tables;
3. Afficher la liste des noms de tables et leur tailles en T-SQL
La troisième solution, beaucoup plus complète, consiste à utiliser plusieurs tables système SQL Server telles que : sys.tables, sys.indexes, sys.partitions, sys.allocation_units et sys.schemas.
Ces 5 tables permettent d’afficher le nombre de lignes dans chaque table et l’espace disque utilisé. Par exemple, cette requête affiche toutes les tables avec leur nombre de lignes triées par ordre décroissant.
Cette requête est utile pour trouver la taille des plus grandes tables dans une base de données SQL Server.
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 par.rows DESC;
Cette liste de points explique la requête ci-dessus et comment elle est construite.
- Le mot-clé « ORDER BY par.rows DESC; » est utilisé pour trier la liste des tables SQL Server par leur nombre de lignes, dans un ordre décroissant.
- Pour trier par schéma puis par nom de table, utilisez « ORDER BY 1,2 » ou « ORDER BY sch.name, tab.name; ».
- La taille des tables est notée en KiloOctets ou Ko.
A propos des objets SQL Server et des tables systèmes
Ce court tutoriel technique sur SQL Server propose 3 requêtes pour lister toutes les tables dans une base de données. Si vous êtes encore nouveau sur SQL Server et souhaitez créer une table, voici comment créer une table SQL Server et insérer quelques lignes de données.
Pour aller plus loin, il est possible d’afficher une liste de tables MS SQL avec plus d’accent sur l’espace disque disponible.







Soyez le premier à commenter