Ver Mensaje Individual
  #7 (permalink)  
Antiguo 10/08/2010, 10:59
yera2002
 
Fecha de Ingreso: agosto-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 2
Respuesta: Obtener los indices y las columnas que componen dichos indices

Hola IIslas:

Muchas gracias por contestar, en efecto el procedimiento que me enviaste funciona, salvo que tiene el detalle que en valor de tabla pone siempre el ultimo registro encontrado. Asi que me di a la tarea de seguir buscando, en base a lo que tu me escribiste y lo que encontre fue esto:

DECLARE @IndexInfoTemp TABLE (index_name varchar(250)
,index_description varchar(250)
,index_keys varchar(250)
)

DECLARE @IndexInfo TABLE (table_name sysname
,index_name varchar(250)
,index_description varchar(250)
,index_keys varchar(250)
)

DECLARE @Tables Table (RowID int not null identity(1,1)
,TableName sysname
)
DECLARE @MaxRow int
DECLARE @CurrentRow int
DECLARE @CurrentTable sysname

INSERT INTO @Tables
SELECT
DISTINCT t.name
FROM sys.indexes i
INNER JOIN sys.tables t ON i.object_id = t.object_id
WHERE i.Name IS NOT NULL
SELECT @MaxRow=@@ROWCOUNT,@CurrentRow=1

WHILE @CurrentRow<=@MaxRow
BEGIN
SELECT @CurrentTable=TableName FROM @Tables WHERE RowID=@CurrentRow
INSERT INTO @IndexInfoTemp
exec sp_helpindex @CurrentTable
INSERT INTO @IndexInfo
(table_name , index_name , index_description , index_keys)
SELECT
@CurrentTable , index_name , index_description , index_keys
FROM @IndexInfoTemp
DELETE FROM @IndexInfoTemp
SET @CurrentRow=@CurrentRow+1
END --WHILE

SELECT table_name AS [Table] , index_keys AS [ColumnName],index_name,index_description
FROM @IndexInfo

Funciona a la perfeccion por lo menos para lo que yo estaba buscando, de verdad gracias

Saludos...