DROP VIEW [dbo].[idxinfo_v2]
GO
CREATE VIEW [dbo].[idxinfo_v2]
AS
SELECT
CAST(SERVERPROPERTY('MachineName') AS VARCHAR(20)) AS [Hostname]
, DB_NAME(DB_ID()) AS [DBName]
, [u].[name] AS [Owner]
, [o].[name] AS [TableName]
, [i].[indid] AS [IndexID]
, CASE [i].[name] WHEN [o].[name] THEN '** NONE **'
ELSE [i].[name] END AS [IndexName]
, CASE [i].[indid] WHEN 1 THEN 'CLUSTERED'
WHEN 0 THEN 'HEAP'
ELSE 'NONCLUSTERED' END AS [ClusterType]
, CASE WHEN ([i].[status] & 2048) > 0 THEN 'PRIMARY KEY'
WHEN ([i].[status] & (2|4096)) > 0 THEN 'UNIQUE'
ELSE '' END AS [UniqueType]
, CASE WHEN ([i].[status] & (2048)) > 0 OR (([i].[status] & (4096)) > 0 ) THEN 'CONSTRAINT'
WHEN [i].[indid] = 0 THEN ' '
ELSE 'INDEX' END AS [IndexType]
, CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 1) IS NULL THEN ''
ELSE INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid], 1) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 2) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],2) END +
CASE WHEN INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid], 3) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],3) END +
CASE WHEN INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid], 4) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],4) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 5) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],5) END +
CASE WHEN INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid], 6) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],6) END +
CASE WHEN INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid], 7) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid], 7) END +
CASE WHEN INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid], 8) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],8) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 9) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],9) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 10) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],10) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 11) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],11) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 12) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],12) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 13) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],13) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 14) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],14) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 15) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],15) END +
CASE WHEN INDEX_COL([u].[name]+'.'+ QUOTENAME([o].[name]), [i].[indid], 16) IS NULL THEN ''
ELSE ', '+INDEX_COL([u].[name]+'.'+QUOTENAME([o].[name]), [i].[indid],16) END AS [AllColName]
, [i].[OrigFillFactor]AS [FillFactor]
, [st].[index_depth] AS [IndexDepth]
, [st].[index_level] AS [IndexLevel]
, [st].[page_count] AS [TotalPageCount]
, ROUND([st].[avg_fragmentation_in_percent], 2) AS [PctFrag]
FROM [dbo].[sysobjects] o (NOLOCK)
LEFT OUTER JOIN [dbo].[sysindexes] i (NOLOCK)
ON [o].[id] = [i].[id]
LEFT OUTER JOIN sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL , 'LIMITED') st
ON [i].[id] = [st].[object_id]
AND [i].[indid] = [st].[index_id]
JOIN [dbo].[sysusers] u (NOLOCK)
ON [o].[uid] = [u].[uid]
WHERE [o].[type] = 'U'
AND [i].[indid] < 255
AND [o].[name] NOT IN ('dtproperties')
AND [i].[name] NOT LIKE '_WA_Sys_%'
GO
GRANT SELECT ON [dbo].[idxinfo_v2] TO public
GO
|