Erro ao reindexar tabelas
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.