Home > Link, Microsoft SQL Server, MSBI, Optimization, Query, Script, SQL, SQL Mentalist, SQL PraRup, SQL Query, SQL Server, Technology,, TSQL, Vishal Pawar > BI SQL # 258 : SQL Server DBA Scripts : Index Definition Audit Script

BI SQL # 258 : SQL Server DBA Scripts : Index Definition Audit Script

Hi Folks,

In this article we are going to cover the Index Definition Audit Script.

In this post we are going to discuss following points:

  • Problem Statement of SQL Script:
  • Description of SQL Script:
  • SQL Script Output Column
  • SQL Script Code
  • SQL Script Output Screenshot
  • User Level to execute

Problem Statement of SQL Script:

How to Find index details for every table Database?

Description of SQL Script:

This script will index details for every table Database.

SQL Script Output Column

image

SQL Script Code

WITH indexCTE
AS (
    SELECT st.object_id AS objectID
        ,st.NAME AS tableName
        ,si.index_id AS indexID
        ,si.NAME AS indexName
        ,si.type_desc AS indexType
        ,sc.column_id AS columnID
        ,sc.NAME + CASE 
            WHEN sic.is_descending_key = 1
                THEN ' DESC'
            ELSE ''
            END AS columnName
        ,sic.key_ordinal AS ordinalPosition
        ,CASE 
            WHEN sic.is_included_column = 0
                AND key_ordinal > 0
                THEN sc.NAME
            ELSE NULL
            END AS indexKeys
        ,CASE 
            WHEN sic.is_included_column = 1
                THEN sc.NAME
            ELSE NULL
            END AS includedColumns
        ,sic.partition_ordinal AS partitionOrdinal
        ,CASE 
            WHEN sic.partition_ordinal > 0
                THEN sc.NAME
            ELSE NULL
            END AS partitionColumns
        ,si.is_primary_key AS isPrimaryKey
        ,si.is_unique AS isUnique
        ,si.is_unique_constraint AS isUniqueConstraint
        ,si.has_filter AS isFilteredIndex
        ,COALESCE(si.filter_definition, '') AS filterDefinition
    FROM sys.tables AS st
    INNER JOIN sys.indexes AS si ON si.object_id = st.object_id
    INNER JOIN sys.index_columns AS sic ON sic.object_id = si.
        object_id
        AND sic.index_id = si.index_id
    INNER JOIN sys.columns AS sc ON sc.object_id = sic.object_id
        AND sc.column_id = sic.column_id
    )
SELECT DISTINCT @@SERVERNAME AS ServerName
    ,DB_NAME() AS DatabaseName
    ,tableName
    ,indexName
    ,indexType
    ,STUFF((
            SELECT ', ' + indexKeys
            FROM indexCTE
            WHERE objectID = cte.objectID
                AND indexID = cte.indexID
                AND indexKeys IS NOT NULL
            ORDER BY ordinalPosition
            FOR XML PATH('')
                ,TYPE
            ).value('.', 'varchar(max)'), 1, 1, '') AS indexKeys
    ,COALESCE(STUFF((
                SELECT ', ' + includedColumns
                FROM indexCTE
                WHERE objectID = cte.objectID
                    AND indexID = cte.indexID
                    AND includedColumns IS NOT NULL
                ORDER BY columnID
                FOR XML PATH('')
                    ,TYPE
                ).value('.', 'varchar(max)'), 1, 1, ''), '') AS 
    includedColumns
    ,COALESCE(STUFF((
                SELECT ', ' + partitionColumns
                FROM indexCTE
                WHERE objectID = cte.objectID
                    AND indexID = cte.indexID
                    AND partitionColumns IS NOT NULL
                ORDER BY partitionOrdinal
                FOR XML PATH('')
                    ,TYPE
                ).value('.', 'varchar(max)'), 1, 1, ''), '') AS 
    partitionKeys
    ,isPrimaryKey
    ,isUnique
    ,isUniqueConstraint
    ,isFilteredIndex
    ,FilterDefinition
FROM indexCTE AS cte
--WHERE tableName = 'SalesOrderDetail'
ORDER BY tableName
    ,indexName;

SQL Script Output Screenshot

image

User Level to execute

300

    Hope you will like the Index Definition Audit Script.

    If you really like reading my blog and understood at least few thing then please don’t forget to subscribe my blog.

If you want daily link and analysis or interesting link go to following website which will give @ your inbox please subscribe our following link resource blog :

Link Resource Website

For More information related to BI World visit my Mentalist Blog

SQL Server Mentalist >> SQL Learning Blog

Business Intelligence Mentalist >> BI World

Infographic Mentalist >> Image worth explaining thousand Words

Microsoft Mentalist >> MVC,ASP.NET, WCF & LinQ

DBA Mentalist >>Advance SQL Server Blog

Microsoft BI Mentalist >> MS BI Development Update

Connect With me on

| FaceBook |Twitter | linkedIn| Google+ | WordPress | RSS |

Advertisements
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: