-- 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'