Display all index properties on the instance from all user databases.
Paste into Query Analyser on the instance, alternatively save as a stored procedure.
Display all index properties on the instance from all user databases.
Paste into Query Analyser on the instance, alternatively save as a stored procedure.
--David Wootton Enumerate index dependencies and descriptions. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED set nocount on declare @db varchar(2000) declare @cmd varchar(8000) declare @TabName varchar(100) create table #T (Dbname varchar(500), TabName varchar(200), IndexName varchar(200), IndexDescr varchar(200), IndexKeys varchar(200), IndexSize int) declare cur cursor for select ltrim(upper('['+name+']')) from master .. sysdatabases where status & 512 <> 512 and dbid > 4 order by name open cur fetch next from cur into @db while @@fetch_status = 0 begin select @cmd = 'Use'+space(1)+@db select @cmd = @cmd + ' DECLARE @TabName varchar(100) DECLARE TCursor CURSOR FAST_FORWARD LOCAL FOR SELECT ist.table_schema+''.''+ist.table_name FROM sys.sysobjects sys inner join INFORMATION_SCHEMA.TABLES ist on ist.table_name = sys.name WHERE sys.xtype = ''U'' OPEN TCursor FETCH NEXT FROM TCursor INTO @TabName WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO #T (IndexName, IndexDescr, IndexKeys) EXEC sp_helpindex @TabName UPDATE #T SET TabName = @TabName WHERE TabName IS NULL UPDATE #T SET DbName = db_name() where dbname is null FETCH NEXT FROM TCursor INTO @TabName END CLOSE TCursor DEALLOCATE TCursor DECLARE @ValueCoef int SELECT @ValueCoef = low FROM Master.dbo.spt_values WHERE number = 1 AND type = N''E'' UPDATE #T SET IndexSize = ((CAST(sysindexes.used AS bigint) * @ValueCoef )/1024)/1024 from sys.sysobjects INNER JOIN sys.sysindexes ON sysobjects.id = sysindexes.id INNER JOIN #T T ON substring(T.tabname, patindex(''%.%'', T.tabname)+1, len (T.tabname)) collate SQL_Latin1_General_CP1_CI_AS = sysobjects.name AND T.IndexName collate SQL_Latin1_General_CP1_CI_AS = sysindexes.name ' exec(@cmd) fetch next from cur into @db end close cur deallocate cur SELECT @@servername, dbname, Tabname, indexname, indexdescr, indexkeys, convert(varchar(20), indexSize)+space(1)+'MB' as IndexSize FROM #T group by dbname, Tabname, indexname, indexdescr, indexkeys, indexSize ORDER BY 2, len(indexsize) desc, replace(convert(varchar(20), indexsize), 'MB','') desc DROP TABLE #T