Icono del sitio Programando a medianoche

Reindexar todas las tablas de una base de SQL Server

Muchas veces nos a pasado que necesitamos reindexar todas las tablas de una base de datos del SQL Server y no encontramos un comando que lo haga. ¿A Uds. les pasó?
Bueno, para no entrar en pánico, especialmente si la base de datos tiene muchas tablas, armamos 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_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)

     FETCH NEXT FROM TableCursor INTO @TableName
     END

CLOSE TableCursor
DEALLOCATE TableCursor

Es algo sencillo pero que nos puede ayudar a hacer un trabajo tedioso.
Espero les sirva.
Suerte!

Salir de la versión móvil