This query works on SQL Server 2017 or newer.
SQL Server 2016 and 2017 brought new features and table types - temporal tables (2016), external tables (2016) and graph tables (2017).
Query below lists tables in current database and identifies it's type. Types include:
- Plan old Regular table
- Graph node table (introduced in SQL Server 2017)
- Graph edge table (introduced in SQL Server 2017)
- System versioned table (temporal table) (introduced in SQL Server 2016)
- History table (introduced in SQL Server 2016)
- PolyBase External table (introduced in SQL Server 2016)
- File table (introduced in SQL Server 2012)
Query
select schema_name(schema_id) as schema_name,
name as table_name,
case when is_external = 1 then 'External table'
when is_node = 1 then 'Graph node table'
when is_edge = 1 then 'Graph edge table'
when temporal_type = 2 then 'System versioned table'
when temporal_type = 1 then 'History table'
when is_filetable = 1 then 'File table'
else 'Regular table'
end as table_type
from sys.tables
order by schema_name, table_name
Columns
- schema_name - schem name of the table
- table_name - table name
- table_type - type of the table identified by the query. Values include:
- Regular table
- Graph node table
- Graph edge table
- System versioned table
- History table
- External table
- File table
Rows
- One row represents one table in a database
- Scope of rows: all tables in a database
- Ordered by schema and table name