Liste des tables SQL Server avec une requête

Pour afficher la liste des tables SQL Server d’une base de données, plusieurs solutions existent. En effet, pour auditer une base des données et ses tables, il est nécessaire d’utiliser la liste des tables sous forme de table ou de tableau Excel. Les développeurs SQL Server recherchent aussi souvent des tables, par exemple pour les analyses d’impact.

1. Tables et vues systèmes contiennent des métadonnées

Ainsi, toutes les solutions présentées ici utilisent les tables systèmes, comme par exemple:

  • information_schema.tables
  • sys.tables
  • sys.indexes
  • sys.partitions
  • sys.allocation_units
  • ou encore sys.schemas

Il est en effet utile de lister rapidement toutes les tables pour un audit, qu’il soit technique ou fonctionnel. Pour commencer, ces trois requêtes T-SQL permettent d’afficher les informations de manière différente.

  1. La première est une simple liste des tables.
  2. Tandis que la deuxième affiche des informations utiles comme la colonne object_id ou encore la date de création et de modification, soit create_date et modify_date.
  3. La troisième requête affiche quant à elle le schéma, le nombre de lignes et l’espace disque utilisé par chaque table.

2. Afficher toutes les tables depuis la table système Tables

Avec SQL Server, information_schema.table est une vue, pas une table. Elle fait partie des vues de type 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 vues présentes dans une base de données.

Vous pouvez la consulter pour obtenir des métadonnées sur ces tables et vues, telles que leurs noms, types (table ou vue), et d’autres détails. On peut par exemple utiliser la table système information_schema.table, comme ceci:

SELECT	* 
FROM	information_schema.tables
WHERE	table_type='BASE TABLE';

3. Liste des tables SQL Server avec une requête sur la vue sys.tables

On peut également avoir recours à la table système sys.tables, on peut voir dans le résultat de la requête que le type des tables stocké dans la colonne [type_desc] est USER_TABLE.

Sys.tables en Transact-SQL est aussi une vue système et non une table. Elle fait partie du catalogue système de SQL Server et fournit des informations sur toutes les tables utilisateur et les tables système qui existent dans la base de données actuelle. Il est possible de l’utiliser pour récupérer divers détails et métadonnées sur les tables, tels que leur nom, leur date de création, leur date de modification, entre autres.

Bien qu’il soit possible de l’interroger comme une table, ne pas la considérer comme une table utilisateur modifiable. Il s’agit plutôt d’une vue structurée qui présente certaines métadonnées du système concernant les tables.

SELECT	* 
FROM	sys.tables;

4. Afficher les tables et leur taille depuis plusieurs tables systèmes

Pour lister toutes les tables d’une base sql server et certaines propriétés, iI est possible d’utiliser plusieurs tables système SQL Server comme par exemple:

  • sys.tables
  • sys.indexes
  • sys.partitions
  • sys.allocation_units
  • et sys.schemas.

Ces tables systèmes sont utiles pour afficher la liste des tables. Elles permettent aussi d’afficher le nombre de lignes dans chaque table et l’espace disque utilisé. Cette requête affiche par exemple toutes les tables avec leur nombre de lignes triées par ordre décroissant.

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 3 desc;

Notes:

  • Le mot clef ORDER BY 3 permet de trier la liste des tables SQL Server par leur nombre de lignes.
  • Pour trier par schéma puis par nom de table, utiliser ORDER BY 1,2.
  • La taille des tables est notée en Kilo-Octets.

Pour débuter sur SQL Server et apprendre comment créer une table, voici comment créer une table SQL Server et y insérer quelques lignes de données. Des tutoriels permettent aussi d’apprendre à modifier une colonne existante comme sa longueur.

Modifier une colonne SQL Server avec un script

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *