列出SQL Server 2012架构中所有表的名称

Ank*_*g43 47 sql sql-server

我在SQL Server 2012中有一个架构.

是否有一个命令可以在SQL中运行以获取该模式中由用户填充的所有表的名称?

我知道MySQL的类似查询,SHOW TABLES;但这不适用于SQL Server.

Kev*_*Kev 72

您应该真正使用INFORMATION_SCHEMA数据库中的视图:

USE <your_database_name>
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES
Run Code Online (Sandbox Code Playgroud)

然后,您可以按表模式和/或表类型对其进行过滤,例如

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Run Code Online (Sandbox Code Playgroud)

  • 嗯,虽然标准和便携,我建议不要使用INFORMATION_SCHEMA,主要是因为它们不完整:http://sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/the-case-against-information-schema-views的.aspx (2认同)

Aar*_*and 38

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';
Run Code Online (Sandbox Code Playgroud)


小智 9

SQL Server 2005,2008,2012或2014:

SELECT * FROM information_schema.tables WHERE TABLE_TYPE='BASE TABLE' AND TABLE_SCHEMA = 'dbo'
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息: 如何使用TSQL获取数据库中所有表的列表?


Lor*_*ita 5

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
Run Code Online (Sandbox Code Playgroud)


jti*_*ley 2

SELECT *
FROM sys.tables t
INNER JOIN sys.objects o on o.object_id = t.object_id
WHERE o.is_ms_shipped = 0;
Run Code Online (Sandbox Code Playgroud)