Usamos a edição SQL Server 2008 R2 Standard (não podemos pagar a edição Enterprise em todos os nossos servidores de banco de dados de produção) e temos que manter periodicamente os índices críticos (reconstrução/reorganização) em nossos servidores de produção. O problema é que, como estamos usando a edição Standard, não temos acesso à opção online de índice de reconstrução. Se não limitarmos o acesso ao banco de dados enquanto esses índices críticos são reconstruídos, obteremos muitos erros de tempo limite porque o índice é essencialmente desativado durante a reconstrução. Eu usei scripts como o script Index Optimize de Ola Hallengren , mas isso não parece resolver meu problema.
O que estou pensando em fazer para contornar esse problema é, em vez de reconstruir um índice quando um índice é fragmentado, criar uma cópia de índice separada (ou seja, IX_some_name_temp), uma vez feito isso, descartar o índice fragmentado original e, finalmente, renomear o índice de cópia de volta ao nome original. O que eu espero é que, enquanto o novo índice está sendo construído, o Sql Server possa usar o original (índice um tanto fragmentado), depois que o novo índice temporário for criado, ele possa começar a usar aquele, então descartamos o índice fragmentado e renomeamos e voltamos ao estado original para a próxima vez que tivermos que executar nosso trabalho agendado.
Minha pergunta é, essa abordagem faz sentido? O sql server poderá utilizar minha nova cópia de índice temporário enquanto estou descartando o índice fragmentado original? Quaisquer dicas ou possivelmente outras estratégias são apreciadas.