TSQL: Re-Indexar todas las tablas de una Base de Datos

Muchas veces nos a pasado que necesitamos re-indexar todas las tablas de una base de datos del SQL Server y no encontramos un comando que lo haga. Bueno, hay una forma de hacerlo, especialmente si la base de datos tiene muchas tablas, creamos un script que obtiene sus nombres del diccionario de datos y ejecuta el comando DBCC REINDEX de SQL Server por cada una de ellas:

DECLARE @TableName varchar(200) 
DECLARE TableCursor 
    CURSOR FOR 
        SELECT TABLE_SCHEMA + '.' + 
           TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 
        WHERE TABLE_TYPE = 'BASE TABLE' 

OPEN TableCursor 
FETCH NEXT FROM TableCursor INTO @TableName 
WHILE @@FETCH_STATUS = 0 
BEGIN 
    PRINT 'Reindexando ' + @TableName 
    DBCC DBREINDEX (@TableName, '') WITH NO_INFOMSGS 
    FETCH NEXT FROM TableCursor INTO @TableName 
END 
CLOSE TableCursor 
DEALLOCATE TableCursor

SQL ServerEspero que os sea de utilidad.

Si quieres más trucos de este tipo te invito a echarle un vistazo a este libro de SQL Server 2014 en Español

Comprar en Amazon
SQL Server 2014 | Amazon Kindle