por Cesar Cassiano Schimanco

Alterar índices (rebuild) em todas tabelas - SQL

Neste artigo vou mostrar um script muito útil para quem precisa fazer um rebuild de todos os indexes de um bando de dados, de uma forma simples e prática.
Este é um script de Derek Dieter, que encontrei no site http://sqlserverplanet.com/dba/alter-index-all-tables/

Alterar todos os índices em um banco de dados e reconstruí-los com este código é muito simples, porém, só irá funcionar no SQL Server 2005 +.
Este script busca todas as tabelas do banco de dados e as armazena em uma tabela temporária, em seguida, percorre e reconstrói tudo.

SELECT
    RowNum = ROW_NUMBER() OVER(ORDER BY t.TABLE_NAME)
    ,TableName = t.TABLE_SCHEMA + '.' + t.TABLE_NAME
    ,AlterMe = 'ALTER INDEX ALL ON [' + t.TABLE_SCHEMA + '].[' + t.TABLE_NAME + '] REBUILD;'
INTO #Reindex_Tables
FROM INFORMATION_SCHEMA.TABLES t
WHERE TABLE_TYPE = 'BASE TABLE'
 
DECLARE @Iter INT
DECLARE @MaxIndex INT
DECLARE @ExecMe VARCHAR(MAX)
 
SET @Iter = 1
SET @MaxIndex =
(
    SELECT COUNT(1)
    FROM #Reindex_Tables
)
 
WHILE @Iter <= @MaxIndex
BEGIN
    SET @ExecMe =
    (
        SELECT AlterMe
        FROM #Reindex_Tables
        WHERE RowNum = @Iter
    )
 
    EXEC (@ExecMe)
    PRINT @ExecMe + ' Executed'
 
    SET @Iter = @Iter + 1
END

 

Comentários

Carregando comentários

Postar um novo comentário



Processando...