web-dev-qa-db-fra.com

Lister les noms de toutes les tables d'un schéma SQL Server 2012

J'ai un schéma dans SQL Server 2012.

Existe-t-il une commande que je peux exécuter en SQL pour obtenir les noms de toutes les tables de ce schéma renseignées par l'utilisateur?

Je connais une requête similaire pour MySQL SHOW TABLES; mais cela ne fonctionne pas avec SQL Server.

37
AnkitGarg43

Vous devriez vraiment utiliser les vues INFORMATION_SCHEMA dans votre base de données:

USE <your_database_name>
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES

Vous pouvez ensuite filtrer cela par schéma de table et/ou type de table, par exemple.

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
62
Kev
SELECT t.name 
  FROM sys.tables AS t
  INNER JOIN sys.schemas AS s
  ON t.[schema_id] = s.[schema_id]
  WHERE s.name = N'schema_name';
29
Aaron Bertrand

SQL Server 2005, 2008, 2012 ou 2014:

SELECT * FROM information_schema.tables WHERE TABLE_TYPE='BASE TABLE' AND TABLE_SCHEMA = 'dbo'

Pour plus de détails: Comment obtenir la liste de toutes les tables d’une base de données utilisant TSQL?

9
Nandoviski
SELECT t1.name AS [Schema], t2.name AS [Table]
FROM sys.schemas t1
INNER JOIN sys.tables t2
ON t2.schema_id = t1.schema_id
ORDER BY t1.name,t2.name
3
Lorena Pita
select * from [schema_name].sys.tables

Cela devrait marcher. Assurez-vous que vous êtes sur le serveur qui contient votre "[schema_name]"

0
Saman Kapali
SELECT *
FROM sys.tables t
INNER JOIN sys.objects o on o.object_id = t.object_id
WHERE o.is_ms_shipped = 0;
0
jtimperley