DECLARE @DATABASE VARCHAR(255)
DECLARE @TABLE VARCHAR(255)
DECLARE @CMD NVARCHAR(500)
DECLARE @FILLFACTOR INT
SET @FILLFACTOR = 90
DECLARE DATABASECURSOR CURSOR FOR
SELECT NAME FROM MASTER.DBO.SYSDATABASES
WHERE NAME NOT IN ('MASTER','MODEL','MSDB','TEMPDB')
ORDER BY 1
OPEN DATABASECURSOR
FETCH NEXT FROM DATABASECURSOR INTO @DATABASE
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CMD = 'DECLARE TABLECURSOR CURSOR FOR SELECT ''['' + TABLE_CATALOG + ''].['' + TABLE_SCHEMA + ''].['' +
TABLE_NAME + '']'' AS TABLENAME FROM [' + @DATABASE + '].INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = ''BASE TABLE'''
EXEC (@CMD)
OPEN TABLECURSOR
FETCH NEXT FROM TABLECURSOR INTO @TABLE
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@@MICROSOFTVERSION / POWER(2, 24) >= 9)
BEGIN
-- SQL 2005 OR HIGHER COMMAND
SET @CMD = 'ALTER INDEX ALL ON ' + @TABLE + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@FILLFACTOR) + ')'
--EXEC (@CMD)
PRINT (@CMD)
END
ELSE
BEGIN
-- SQL 2000 COMMAND
DBCC DBREINDEX(@TABLE,' ',@FILLFACTOR)
END
FETCH NEXT FROM TABLECURSOR INTO @TABLE
END
CLOSE TABLECURSOR
DEALLOCATE TABLECURSOR
FETCH NEXT FROM DATABASECURSOR INTO @DATABASE
END
CLOSE DATABASECURSOR
DEALLOCATE DATABASECURSOR