Esta vista busca en las tablas del sistema de nuestra base de datos en SQL Server y nos retorna detalle de cada una de ellas.
CREATE VIEW User_Table_Index_Details as
SELECT
sysobjects.name Table_Name,
sysindexes.name AS Indext_Name,
sysindexkeys.indid IndexID,
sysindexkeys.colid ColID,
syscolumns.name AS Colm_Name,
syscolumns.xtype,
syscolumns.length
FROM
sysobjects INNER JOIN
sysindexes ON sysobjects.id = sysindexes.id INNER JOIN
sysindexkeys ON sysindexes.id = sysindexkeys.id AND
sysindexes.indid = sysindexkeys.indid INNER JOIN
syscolumns ON sysindexkeys.id = syscolumns.id AND
sysindexkeys.colid = syscolumns.colid
where sysobjects.xtype='U'
SELECT
sysobjects.name Table_Name,
sysindexes.name AS Indext_Name,
sysindexkeys.indid IndexID,
sysindexkeys.colid ColID,
syscolumns.name AS Colm_Name,
syscolumns.xtype,
syscolumns.length
FROM
sysobjects INNER JOIN
sysindexes ON sysobjects.id = sysindexes.id INNER JOIN
sysindexkeys ON sysindexes.id = sysindexkeys.id AND
sysindexes.indid = sysindexkeys.indid INNER JOIN
syscolumns ON sysindexkeys.id = syscolumns.id AND
sysindexkeys.colid = syscolumns.colid
where sysobjects.xtype='U'
Luego de tener creada la vista solo deberíamos llamarla en una consulta y nos retorna los datos correctos.
SELECT *
FROM User_Table_Index_Details
FROM User_Table_Index_Details
Donde también le podríamos aplicar filtros para que nos muestre el detalle de solo una tabla en específico y el filtro que tu quieras
SELECT *
FROM User_Table_Index_Details
WHERE Table_Name = Nombre_Tabla
FROM User_Table_Index_Details
WHERE Table_Name = Nombre_Tabla