lunes, 10 de enero de 2011

Borrar todos los índices del asistente de optimización de base de datos de Sql Server

Si eres como yo y utilizas el asistente para optimización de base de datos de Sql Server sin mucho criterio (ya sé que tengo que mejorar pero a veces la prisa apremia), te paso este script que deja la base de datos limpia de esos índices que a veces se descontrolan y ocupan más de lo necesario.

DECLARE @stmt NVARCHAR(4000)

DECLARE c_dta_index CURSOR

READ_ONLY

FOR

       SELECT 

                    OBJECT_NAME(i.object_id) AS tableName,

                    i.name AS indexName

       FROM    sys.indexes AS i

                    INNER JOIN sys.partitions AS p ON i.object_id = p.object_id AND i.index_id = p.index_id

                    INNER JOIN sys.allocation_units AS a ON p.partition_id = a.container_id

       WHERE   i.name LIKE '[_]dta[_]%'

OPEN c_dta_index

DECLARE @tableName NVARCHAR(4000)

DECLARE @indexName NVARCHAR(4000)

FETCH NEXT FROM c_dta_index INTO @tableName, @indexName

WHILE (@@fetch_status <> -1)

BEGIN

       IF (@@fetch_status <> -2)

       BEGIN

             SET @stmt = 'DROP INDEX ' + @tableName + '.' + @indexName

             EXECUTE(@stmt)

       END

       FETCH NEXT FROM c_dta_index INTO @tableName, @indexName

END

CLOSE c_dta_index

DEALLOCATE c_dta_index

Un saludo!

No hay comentarios:

Publicar un comentario