domingo, 20 de abril de 2014

Reconstruir Todos los Indices de una base de datos.

El proceso de volver a crear un índice quita y vuelve a crear el índice. Quita la fragmentación, utiliza espacio en disco al compactar las páginas según el valor de factor de relleno especificado o existente y vuelve a ordenar las filas del índice en páginas contiguas. Cuando se especifica ALL, todos los índices de la tabla se quitan y se vuelven a generar en una única transacción.
En este ejemplo utilizamos un cursor para obtener los nombres de las tablas de la base de datos, para luego con esto,  hacer en un ciclo WHILE que regenere todos los índices de cada tabla.


--Regeneracion de Indices, solo situarse en la BD necesaria
DECLARE @TableName varchar(255)
DECLARE TableCursor CURSOR FOR
SELECT table_name FROM information_schema.tables
WHERE table_type = 'BASE TABLE' and table_schema='dbo'

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('ALTER INDEX ALL ON [' + @TableName +
 '] REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
              STATISTICS_NORECOMPUTE = ON)')
FETCH NEXT FROM TableCursor INTO @TableName
END

CLOSE TableCursor
DEALLOCATE TableCursor

No hay comentarios:

Publicar un comentario