Casos do Dia a Dia – UPDATE failed because the following SET options have incorrect settings ‘QUOTED_IDENTIFIER’

Rate this post

E aí pessoas,

Nesse post vamos resolver mais um Caso do Dia a Dia com a mensagem de erro abaixo:

UPDATE failed because the following SET options have incorrect settings ‘QUOTED_IDENTIFIER’

Recomendo que você leia também o post anterior, onde falei com mais detalhes sobre o ‘QUOTED_IDENTIFIER’. #gogogo

https://luizlima.net/dicas-t-sql-pra-que-serve-a-opcao-set-quoted-identifier-on/


Explicando o cenário:

Um determinado cliente fez uma Atualização da Aplicação. Nessa nova versão foram incluídos alguns ÍNDICES FILTRADOS. Agora vamos iniciar o nosso exemplo para simular o problema.

Vou criar uma tabela, inserir um registro e criar um índice filtrado.

IMPORTANTE: Aqui a opção “QUOTED_IDENTIFIER” está habilitada.

Agora vou fazer um UPDATE e ele será executado normalmente. Até aqui nada demais.


SET QUOTED_IDENTIFIER OFF – Simulando o Erro:

Agora vou desabilitar a opção “QUOTED_IDENTIFIER” e executar novamente o UPDATE.

UPDATE 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.

O mesmo problema vai acontecer se tentarmos fazer um INSERT / DELETE com a opção “QUOTED_IDENTIFIER” desabilitada.

Msg 1934, Level 16, State 1, Line 39

DELETE 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.

Msg 1934, Level 16, State 1, Line 52

INSERT 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.

No caso do cliente que comentei no início do post, eu encontrei essa mensagem de erro em um JOB que começou a falhar justamente após a Atualização da Aplicação devido a criação de alguns índices filtrados. Agora vamos simular o problema com o JOB também.

Coloquei o UPDATE abaixo dentro de um JOB. Lembrando que essa tabela possui um índice filtrado.

Ao executar o JOB, ele vai falhar:

Para resolver, basta você habilitar explicitamente o QUOTED_IDENTIFIER no início do script e o JOB será executado com sucesso.


Índices Filtrados:

Se você quiser mais detalhes sobre os índices filtrados, dê uma olhada no link abaixo da Documentação Oficial da Microsoft:

https://docs.microsoft.com/pt-br/sql/relational-databases/indexes/create-filtered-indexes?view=sql-server-ver15

Nesse outro link que fala sobre o QUOTED_IDENTIFIER, ele informa que essa opção precisa estar ON quando trabalharmos com índices filtrados OK.

https://docs.microsoft.com/pt-br/sql/t-sql/statements/set-quoted-identifier-transact-sql?view=sql-server-ver15

Portanto, minha DICA FINAL é:

  • CUIDADO ao criar índices filtrados, pois como mostrei nos exemplos anteriores, eles podem gerar alguns efeitos colaterais em outras rotinas / JOBs.
  • Se você tiver algum problema com as mensagens de erros anteriores, basta habilitar a opção “SET QUOTED_IDENTIFIER ON” no início do script que o problema será resolvido.

Referências:

Segue mais alguns posts como referência sobre o assunto:

https://sqlhints.com/2012/02/04/insertupdate-failed-because-the-following-set-options-have-incorrect-settings-quoted_identifier/

https://www.sqlservercentral.com/forums/topic/update-failed-because-the-following-set-options-have-incorrect-settings

https://stackoverflow.com/questions/1243991/update-failed-because-the-following-set-options-have-incorrect-settings-quoted

https://dba.stackexchange.com/questions/52802/sql-server-agent-quoted-identifier#:~:text=The%20scenario%20is%20rather%20simple,QUOTED_IDENTIFIER’%20…%22.


Espero que tenha gostado e que isso também possa ser útil no seu dia a dia. Até o próximo post!

Me siga no LinkedIn e YouTube para ficar por dentro das novidades.

Abraço,

Luiz Vitor França Lima

Consultor SQL Server

Deixe uma resposta