System Catalog Views

Applies to: SQL Server 2022, SQL Server 2019, SQL Server 2017, SQL Server 2016, Azure SQL Database, Azure Synapse Analytics, SQL Server Analysis Services, SQL Server Reporting Services, Parallel Data Warehouse

System catalog views provide metadata about the objects in a SQL Server instance. They are a critical part of understanding and managing your databases. These views offer detailed information about tables, columns, stored procedures, user-defined functions, indexes, and much more.

Note: System catalog views are the recommended way to query metadata. Older system tables (e.g., sysobjects) are deprecated.

Overview of System Catalog Views

System catalog views are organized into schemas, primarily:

Commonly Used Catalog Views

sys.objects

Returns a row for each schema-scoped object in an instance of SQL Server. This view lists objects like tables, views, stored procedures, and functions.

SELECT
    name,
    type_desc,
    create_date,
    modify_date
FROM
    sys.objects
WHERE
    type = 'U' -- User table
ORDER BY
    name;

sys.columns

Contains a row for each column of each object in the instance of SQL Server. It provides information about column names, data types, nullability, and default constraints.

SELECT
    c.name AS ColumnName,
    t.name AS TableName,
    ty.name AS DataType,
    c.max_length,
    c.is_nullable
FROM
    sys.columns AS c
JOIN
    sys.tables AS t ON c.object_id = t.object_id
JOIN
    sys.types AS ty ON c.user_type_id = ty.user_type_id
WHERE
    t.name = 'YourTableName' -- Replace with your table name
ORDER BY
    c.column_id;

sys.tables

Returns a row for each user table and system table in the instance of SQL Server.

SELECT
    name,
    object_id,
    create_date
FROM
    sys.tables
ORDER BY
    name;

INFORMATION_SCHEMA.COLUMNS

Provides a standardized view of column metadata. It is useful for querying across different database systems.

SELECT
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    DATA_TYPE,
    IS_NULLABLE
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE
    TABLE_NAME = 'YourTableName' -- Replace with your table name
ORDER BY
    ORDINAL_POSITION;

Key Concepts

Tip: For a comprehensive list of system catalog views and their descriptions, refer to the Microsoft Learn catalog views reference.

Benefits of Using Catalog Views

Further Reading