Buscar este blog

viernes, 10 de junio de 2011

Combinando Vistas del Sistema - Usando Metadata

Amigos,

Muchas veces solemos ahogarnos en un baso de agua al no utilizar todo el potencial que las vistas de catalogo del Sql Server gentilmente nos ofrece.

Aquí tiene un ejemplo de cómo listar cada uno de los índices de Base de Datos, mendiante la combinación de vistas del sistema.

Por favor, no duden en preguntar ante cualquier duda.

Con uds. es script.
---------------------------------------------------------------------------------------------------------------------
-- Detalle: Este script lista todos los índices de una Base de Datos --
-- Gustavo Herrera para Sql Server Tips - http://gherrerasqlserver.blogspot.com/ --
---------------------------------------------------------------------------------------------------------------------

SELECT
o.[name] AS 'Table Name',
i.[name] as 'Index Name',
i.[type_desc]'Description',
f.[name]AS 'Filegroup',
c.[name] as 'Fields'
FROM sys.indexes i
inner JOIN sys.filegroups f -- para saber el filegroup
ON i.data_space_id = f.data_space_id
INNER JOIN sys.objects o -- para nombre de la tabla
ON i.[object_id] = o.[object_id]
inner join Sys.Index_Columns as z --
on z.[object_id] = o.[object_id]
INNER JOIN sys.columns c
on c.[object_id] = z.[object_id] and
c.Column_ID = z.Column_ID
WHERE
o.type = 'U'
and i.[type_desc] <> 'HEAP'
and i.[type_desc] <> 'CLUSTERED' and
i.index_Id = z.index_id
order by o.name,
i.name
GO