Query para gerar índices nonclustered de tabelas replicadas

DBA e Consultor de Banco de Dados

Query para gerar índices nonclustered de tabelas replicadas

Tempo de leitura: 3 minutos

Falaaa Turminhaaa…

Tudo beleza?

Estamos de volta depois de um tempo sem postar no Blog =)

Recentemente, tivemos um caso bem especifico na Power Tuning de um cliente que sentiu problemas de performance em uma base replicada por “Replicação Transacional”.

Pretendo futuramente fazer uma série no Blog sobre Replicação, que particularmente é um assunto que gosto bastante..

Por padrão, os tipos de Replicação do SQL Server não levam os índices NON-CLUSTERED durante o envio das transações (dentre uma série de outras coisas)…

Neste artigo focaremos apenas nessa parte dos índices que foi o cenário na qual precisei atuar.

Existe uma configuração nas propriedades da “Publicação” na qual podemos habilitar para criar os índices NON-CLUSTERED no destino, porém, não considero muito vantajoso habilitar essa configuração por alguns motivos, tais como :

  • Ao habilitar essa configuração é necessário fazer um novo “Snapshot” da publicação para o SQL replicar os seus índices. Isto significa que você terá que gerar um novo “Snapshot” e praticamente recriar toda a sua replicação… Em um ambiente que replica tabelas pequenas, essa opção até vai bem… Mas em ambientes muito grandes, essa ação pode levar muito tempo, tornando esse processo muito oneroso e inviável.
  • Essa configuração não é mantida para novos índices, ou seja, ela só funciona no primeiro “Snapshot” . Se você criar um novo índice, este índice só será criado no seu “Assinante” se a configuração for marcada novamente e gerar um novo snapshot.

Enfim, neste cenário que atuamos o banco replicado já rodava por alguns anos e tinha um volume de dados considerável.. Preferimos por não recriar tudo novamente direto pelas configurações por questões estratégicas.

Como uma solução para isso, desenvolvi uma query para gerar o script dos index NON-CLUSTERED somente de tabelas replicadas, assim ficou muito mais fácil de levar apenas os índices pertencentes as tabelas da replicação para o “Assinante”.

Segue abaixo a consulta :

Ao rodar a query, teremos a sintaxe pronta para criação de todos os índices pertencentes a replicação, basta copiar e colar no seu banco “Assinante”.. Legal né?

É isso ai galerinha, espero que essa consulta possa ajuda-los no dia a dia se passarem por alguma situação semelhante.

Dúvidas, sugestões e correções serão sempre bem vindas..

Espero postar com mais frequência..

Um grande abraço a todos..

Fui.

Gustavo Larocca

Consultor SQL Server

 

 

 

 

 

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.