-- 2007 Giacomo Bellini

set implicit_transactions off

-- Impostare questa variabile con il nome del database
declare @database varchar(50)
set @database='ccse_site'

IF(SELECT count(*) as DBNAME FROM master..sysdatabases where name=@database)>0
BEGIN

declare @tabella varchar(50)
declare @indice varchar(50)

create table #temptable (TableName varchar(50), IndexName varchar(50))
declare @insert as varchar(500)

begin tran
set @insert = 'use ' + @database + '; insert into #temptable SELECT so.name, si.name
FROM sysobjects so INNER JOIN
sysindexes si ON OBJECT_ID(so.name) = si.id INNER JOIN
sysusers su ON so.uid = su.uid
WHERE (so.xtype = ''U'') AND (si.indid <> 0) AND (si.indid <> 255)'
exec(@insert)
commit tran

select count(*) as [Index Count] from #temptable

DECLARE Indici CURSOR FOR select TableName, IndexName from #temptable

OPEN Indici

FETCH NEXT FROM Indici INTO @tabella, @indice
WHILE @@FETCH_STATUS = 0
BEGIN

print('****************************')
print(@tabella + ' - ' + @indice)
print('****************************')
dbcc indexdefrag (@database, @tabella, @indice)
print('')

FETCH NEXT FROM Indici INTO @tabella, @indice

END

CLOSE Indici
DEALLOCATE Indici
DROP TABLE #temptable
END
ELSE
print ' ERRORE: database ' + @database + ' inesistente'