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 TSQL qui peuvent être utilisées pour récupérer une liste de tables pour l'ancienne version de SQL Server 2000 et la version plus récente de 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 le SYS.SYSOBJECTS
vue des métadonnées. SYS.SYSOBJECTS
contient une ligne pour chaque objet créé dans la base de données, y compris les stored procedures
, views
, et user tables
(qui sont importants à distinguer des system tables
.)
Les SYSOBJECTS
La table 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 system tables
), nous devrons trouver des résultats où le xtype
colonne (qui spécifie le object type
pour cette ligne) est égal à la valeur U
, qui signifie user table
. L'instruction TSQL résultante devrait ressembler à ceci :
SELECT
*
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Remarque :Depuis SYSOBJECTS
font partie du SYS
espace de noms, lors de l'interrogation de SYSOBJECTS
il est inutile de préciser que SYSOBJECTS
fait partie du SYS
global espace de noms, 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 le name
colonne et peut-être le crdate
(date de création) :
SELECT
name,
crdate
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Liste des tables dans SQL Server 2005 ou version ultérieure
La liste de toutes les tables du serveur SQL lors de l'utilisation d'une version plus récente (SQL 2005 ou supérieure) consiste à interroger le INFORMATION_SCHEMA
vues qui sont automatiquement intégrées à SQL Server. Ceux-ci vous permettent de visualiser facilement une grande variété de métadonnées pour cette instance SQL Server particulière, y compris des informations sur COLUMNS
, ROUTINES
, et même TABLES
.
Vous pouvez remarquer qu'il y a quatre colonnes renvoyées lors de l'utilisation de INFORMATION_SCHEMA.TABLES
vue, mais la colonne la plus importante est TABLE_TYPE
, qui détermine si la table de cette ligne est une table réelle (BASE TABLE
) ou une vue (VIEW
).
Pour retourner toutes les tables et vues dans une requête, exécutez l'instruction TSQL suivante :
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES;
GO
Il peut également être judicieux de préciser la base de données que vous souhaitez interroger :
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES;
GO
Si vous souhaitez uniquement récupérer les tables réelles et filtrer les vues à partir des résultats, ajoutez un WHERE TABLE_TYPE = 'BASE TABLE'
clause :
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES
WHERE
TABLE_TYPE = 'BASE TABLE';
GO