Section courante

A propos

Section administrative du site

Afficher toutes les tables dans une base de données

Selon la version de SQL Server que vous exécutez, la méthode d'interrogation et de renvoi d'une liste de toutes les tables créées par l'utilisateur peut différer légèrement. Ci-dessous, nous examinerons brièvement les instructions Transact-SQL pouvant être utilisées pour récupérer une liste de tables pour l'ancienne version de SQL Server 2000 et la nouvelle version SQL Server 2005 ou au-delà.

Liste des tables dans SQL Server 2000

Pour les anciennes versions de SQL Server (telles que SQL Server 2000, bien que cette méthode soit également prise en charge dans SQL Server 2005 pour la compatibilité descendante), vous devrez interroger la vue des métadonnées SYS.SYSOBJECTS. Le SYS.SYSOBJECTS contient une ligne pour chaque objet ayant été créé dans la base de données, y compris les STORED PROCEDURE, les vues et les tables utilisateur (étant importantes à distinguer des tables système.) La table SYSOBJECTS contient quelques dizaines de colonnes de données car elle doit contenir des informations sur pratiquement tout ce qui est ajouté au serveur au fil du temps. Par conséquent, pour trouver une liste de tables créées par l'utilisateur (ignorant ainsi les tables système), nous devrons trouver des résultats où la colonne xtype (spécifiant le type d'objet pour cette ligne) est égale à la valeur U, signifiant table utilisateur. L'instruction Transact-SQL résultante devrait ressembler à ceci :

  1. SELECT * FROM SYSOBJECTS WHERE xtype = 'U';
  2. GO

Étant donné que SYSOBJECTS fait partie de l'espace de noms SYS, lors de l'interrogation de SYSOBJECTS, il est inutile de spécifier que SYSOBJECTS fait partie de l'espace de noms SYS global, nous pouvons donc l'omettre comme indiqué dans l'exemple ci-dessus. Cela renverra une liste de résultats de toutes les tables créées par l'utilisateur. Étant donné que la quantité d'informations renvoyées lors de l'interrogation de toutes les colonnes est assez importante, vous souhaiterez peut-être réduire les résultats en affichant uniquement la colonne de nom et peut-être la date de création (date de création) :

  1. SELECT name, crdate FROM SYSOBJECTS WHERE  xtype = 'U';
  2. GO

Liste des tables dans SQL Server 2005 ou plus récent

Afficher la liste de toutes les tables dans SQL Server lors de l'utilisation d'une version plus récente (SQL Server 2005 ou supérieure) consiste à interroger les vues INFORMATION_SCHEMA étant automatiquement intégrées à SQL Server. Ceux-ci vous permettent d'afficher facilement une grande variété de métadonnées pour cette instance SQL Server particulière, y compris des informations sur les COLUMNS, les ROUTINES et même les TABLES. Vous pouvez remarquer que quatre colonnes sont renvoyées lors de l'utilisation de la vue INFORMATION_SCHEMA.TABLES, mais la colonne la plus importante est TABLE_TYPE, déterminant si la table de cette ligne est une table réelle (BASE TABLE) ou une vue (VIEW).

Pour renvoyer toutes les tables et vues dans une requête, exécutez l'instruction Transact-SQL suivante :

  1. SELECT * FROM INFORMATION_SCHEMA.TABLES;
  2. GO

Il peut également être judicieux de spécifier la base de données que vous souhaitez interroger :

  1. SELECT * FROM databaseName.INFORMATION_SCHEMA.TABLES;
  2. GO

Si vous souhaitez uniquement récupérer les tables réelles et filtrer les vues des résultats, ajoutez une clause WHERE TABLE_TYPE = 'BASE TABLE' :

  1. SELECT * FROM databaseName.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
  2. GO

Voir également

Référence des opérations

Dernière mise à jour : Vendredi, le 9 octobre 2020