Liste des tables SQL Server avec une seule requête

Pour afficher la liste des tables SQL Server d’une base de données précise, plusieurs solutions sont possibles. En effet pour auditer une base des données et ses tables, il est fréquent de vouloir 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. Ainsi, toutes les solutions présentées dans cet article 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 rapidement toutes les tables pour un audit par exemple, qu’il soit technique ou fonctionnel.

 

 

Comment afficher une liste des tables SQL Server avec une seule requête?

Pour commencer, ces 3 requêtes vous permettent d’afficher 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 modification, soit create_date et modify_date. La troisième requête affiche quant à elle le schéma, le nombre de lignes et l’espace disque utilisé par chaque table.

 

 

Afficher toutes les tables en utilisant la table information_schema.tables

On peut par exemple utiliser la table système information_schema.table, comme suit:

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

 

 

Lister les tables en utilisant la table 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 ».

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. 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 descendant.

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;

 

 

Note:

  • 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 plutôt « ORDER BY 1,2 ».
  • La taille des tables est notée en Kilo-Octets.

 

 

Si vous êtes encore débutant sur SQL Server et que vous souhaitez créer une table : voici  comment créer simplement une table SQL Server et y insérer quelques lignes de données.

 

 

Soyez le premier à commenter

Laisser un commentaire