Liste de tous les index et colonnes d'index dans une base de données SQL Server

Liste de tous les index et colonnes d’index dans une base de données SQL Server

Il existe deux vues de catalogue “sys” que vous pouvez consulter : sys.indexes et sys.index_columns.

Celles-ci vous donneront à peu près toutes les informations que vous pourriez vouloir sur les index et leurs colonnes.

MODIFICATION : Cette requête se rapproche pas mal de ce que vous recherchez :

SELECT
     TableName = t.name,
     IndexName = ind.name,
     IndexId = ind.index_id,
     ColumnId = ic.index_column_id,
     ColumnName = col.name,
     ind.*,
     ic.*,
     col.*
FROM
     sys.indexes ind
INNER JOIN
     sys.index_columns ic ON  ind.object_id = ic.object_id and ind.index_id = ic.index_id
INNER JOIN
     sys.columns col ON ic.object_id = col.object_id and ic.column_id = col.column_id
INNER JOIN
     sys.tables t ON ind.object_id = t.object_id
WHERE
     ind.is_primary_key = 0
     AND ind.is_unique = 0
     AND ind.is_unique_constraint = 0
     AND t.is_ms_shipped = 0
ORDER BY
     t.name, ind.name, ind.index_id, ic.is_included_column, ic.key_ordinal;