Rebuild / Reorganize todos os índices de todas as databases

Segue um script para rebuild/reorganize em todos os índices de todas as databases de usuário. Vale destacar que o script analisa se é para aplicar rebuild ou reorganize, conforme a taxa média de desfragmentação. Além disso o script também considera o tamanho da tabela, reindexando somente aquelas que possuem pelo menos 10 páginas.

USE MASTER
GO

SET NOCOUNT ON;

SELECT ROW_NUMBER() OVER(ORDER BY name) Seq, name Banco
INTO #Databases
FROM sys.databases
WHERE name NOT IN (‘master’, ‘model’, ‘msdb’, ‘tempdb’, ‘ReportServerTempDB’)
AND compatibility_level > 80
ORDER BY Banco;

DECLARE
@Loop INT = 1,
@Qt INT = (SELECT COUNT(1) FROM #Databases),
@Banco VARCHAR(50);

WHILE @Loop 10.0
and p.index_id > 0
and p.page_count >= 10
ORDER BY Esquema, Tabela;
DECLARE
@Loop INT = 1,
@Total INT = (SELECT COUNT(1) FROM #Consulta),
@Comando VARCHAR(500)
WHILE @Loop 30.0 THEN ” REBUILD” ELSE ” REORGANIZE” END)
FROM #Consulta
WHERE Seq = @Loop;
EXEC(@Comando);
PRINT ”Executado: ” + @Comando;
SET @Loop = @Loop + 1;
END;
PRINT DB_NAME() + ” Qtde de índices afetados: ” + CONVERT(VARCHAR(5),@Total);
PRINT ”—–”;
DROP TABLE #Consulta;’);
SET @Loop = @Loop + 1;
END;

DROP TABLE #Databases;



Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s