Skip to main content
Mitratech Success Center

Client Support Center

Need help? Click a product group below to select your application and get access to knowledge articles, webinars, training content, and release notes or to contact our support team.

Authorized users - log in to create a ticket, view tickets status and check your success plan details.

 

Rebuild Indexes

declare @dbname varchar(100) = 'CMO_DB' --INSERT DB NAME HERE

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','msdb','tempdb','model','distribution')   
    and name = @dbname 
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'''   
    
    -- create table cursor  
    EXEC (@cmd)  
    OPEN TableCursor   

    FETCH NEXT FROM TableCursor INTO @Table   
    WHILE @@FETCH_STATUS = 0   
    BEGIN   

        IF (@@MICROSOFTVERSION / POWER(2, 24) >= 9)
        BEGIN

            SET @cmd = 'ALTER INDEX ALL ON ' + @Table + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')' 
            EXEC (@cmd) 
        END
        ELSE
        BEGIN

            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

 

  • Was this article helpful?