SQL SERVER – Scripts to Retrieve Column Names

SQL SERVER - Scripts to Retrieve Column Names columnnames-800x458 SQL Server, just like other relational databases, offers many ways to interact with and manipulate data. Understanding how to retrieve column names from a table is one of the fundamental operations you should be familiar with.

Why Retrieve Column Names?

Before we delve into how to retrieve col names, let’s understand why this is important. When working with databases, especially those with many tables and columns, it’s easy to forget the exact column names or even the data they hold. The ability to retrieve column names helps in:

  • Data exploration: You can understand more about the data you’re working with by looking at the column names.
  • Dynamic SQL: In some cases, you might need to construct SQL commands dynamically where the column names are not known upfront.
  • Data migration: Knowing column names can be critical when moving data between different systems.

How to Retrieve Column Names in SQL Server?

SQL Server provides several ways to retrieve column names. The most common methods leverage system views and stored procedures.

Let’s explore some examples:


SQL Server has several system views, one of which is INFORMATION_SCHEMA.COLUMNS. You can use it to get column information. Here is an example query:


In this query, replace ‘YourTableName’ with the name of your table.

Using the sp_columns Stored Procedure

SQL Server provides a handy stored procedure, sp_columns, which you can use to retrieve column information. Here is how you can use it:

EXEC sp_columns @table_name = 'YourTableName'

Again, replace ‘YourTableName’ with the name of your table.

Using Sys.Columns and Sys.Objects

SQL Server’s sys.columns and sys.objects views can also fetch column information. Here’s an example:

SELECT o.Name TableName, c.Name ColumnName, c.*
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.Name = 'PersonPhone'
ORDER BY o.Name, c.Name

This query retrieves all columns from all tables, ordered by table and column names.


Retrieving column names in SQL Server is a simple yet crucial task in database management. Whether you’re exploring data, crafting dynamic SQL, or migrating data, these methods will help you navigate your data structure effectively. It demonstrates SQL Server’s power and flexibility in handling data operations. You can connect with me on Twitter.

Reference: Pinal Dave (https://blog.sqlauthority.com)

Computed Column, SQL Column, SQL DMV
Previous Post
SQL SERVER – Transaction Logs: The Good, The Bad, and The Ugly
Next Post
Navigating SQL Server CPU and Memory Usage Woes

Related Posts

1 Comment. Leave new

  • I do something like this. I like to have a row count because if a table is empty it’s basically useless for pulling data. Thanks.

    — system search query w/ table counts, change column name or table name wild card to search accordingly
    SELECT schema_name(tab.schema_id) as schema_name
    , tab.name as table_name
    , col.column_id
    , col.name as column_name
    , t.name as data_type
    , col.max_length
    , col.precision
    , SUM([Partitions].[rows]) AS [TotalRowCount]
    FROM sys.tables as tab
    JOIN sys.columns as col
    ON tab.object_id = col.object_id
    LEFT JOIN sys.types as t
    ON col.user_type_id = t.user_type_id
    JOIN sys.partitions AS [Partitions]
    ON tab.[object_id] = [Partitions].[object_id]
    AND [Partitions].index_id IN (0,1)
    WHERE col.name LIKE ‘%searchterm%’
    GROUP BY schema_name(tab.schema_id)
    , tab.name
    , col.column_id
    , col.name
    , t.name
    , col.max_length
    , col.precision
    ORDER BY schema_name
    , table_name
    , column_id


Leave a Reply