Buscar
  • Ignez Mello

Erro ao reindexar tabelas num job

Atualizado: Ago 20

 

Tenho um plano de manutenção que roda semanalmente para algumas bases legadas do SQL 2005, que tiveram upgrades até o 2016. São BDs com uma estrutura meio ruinzinha, PKs com várias colunas, muitos índices para atender as queries. Enfim, aquelas bases que a gente herda quando entra numa empresa, e não consegue mudar nem com reza brava...

 

Para melhorar a performance, montei esse plano que reindexa os índices nonclustered e recalcula as estatísticas. Ajudou um pouco, mas só um pouco. Porém, em uma das bases, eu recebia a mensagem:

 

Executed as user: DOMAIN\SqlAgent. ALTER INDEX failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations. [SQLSTATE 42000] (Error 1934). The step failed.

A parte chata é que a instância tem 14 BDs, e esse erro acontecia apenas com uma tabela de um desses BDs. Exatamente um índice com cláusula WHERE e INCLUDE. E, para completar, se eu uso o mesmo código no SSMS, ele funciona bonitinho, o erro só ocorre no job.

 

Para resolver esse problema, forcei o QUOTED_IDENTIFIER antes do índice. Segue o código. Podem usar por sua conta e risco:

 

 

Volto a lembrar. Esse código foi criado para ajudar alguns BDs com estrutura não totalmente normalizada, e que precisavam de um empurrãozinho para ajudar na performance de consultas.

 

76 visualizações