lunes, 5 de marzo de 2012

Reindexar BD en SQL Server

Script para todas las tablas de una BD de SQL Server ...

DECLARE @cTableName VARCHAR(MAX)

SET NOCOUNT ON;

DECLARE Cur_Tablas CURSOR LOCAL FORWARD_ONLY FOR
SELECT ESQUEMAS.NAME + '.' + TABLAS.NAME AS TABLA
FROM SYS.OBJECTS TABLAS
,SYS.SCHEMAS ESQUEMAS
WHERE TABLAS.TYPE = 'U'
AND ESQUEMAS.SCHEMA_ID = TABLAS.SCHEMA_ID
ORDER BY ESQUEMAS.NAME, TABLAS.NAME

OPEN Cur_Tablas
FETCH Cur_Tablas INTO @cTableName

WHILE (@@FETCH_STATUS = 0)
BEGIN

BEGIN TRY
EXEC ('DBCC DBREINDEX ("' + @cTableName + '"," ", 70)')
PRINT @cTableName
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
END CATCH

FETCH Cur_Tablas INTO @cTableName

END -- Fin del bucle WHILE

CLOSE Cur_Tablas
DEALLOCATE Cur_Tablas

No hay comentarios: