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
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
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 :
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
Filed under: Link, Microsoft SQL Server, MSBI, Optimization, Query, Script, SQL, SQL Mentalist, SQL PraRup, SQL Query, SQL Server, Technology,, TSQL, Vishal Pawar Tagged: DBA, Fast SQL, Microsoft SQL Server, SQL Help, SQL Mentalist, SQL Script, SQL Server, SQL Server 2008 R2, SQL Server 2012, SQL tips, SQL Tricks, TSQL, Vishal Pawar
