Erro ao atualizar planilha: SELECT failed... QUOTED_IDENTIFIER incorreto

Modificado em Seg, 3 Ago na (o) 8:46 AM

  1. DESCRIÇÃO DO ERRO

Ao atualizar a planilha dinâmica, pode ocorrer o seguinte erro:

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

Obs.: em algumas ocorrências a mensagem cita mais de uma opção junto, por exemplo 'ANSI_NULLS, QUOTED_IDENTIFIER'.

  1. CAUSA

Esse erro ocorre quando o SELECT (ou a procedure executada pela planilha) acessa objetos que exigem que determinadas opções de sessão estejam habilitadas — por exemplo, indexed views, colunas computadas indexadas, índices filtrados, query notifications, métodos XML ou índices espaciais.

Na maioria dos casos o problema está na opção QUOTED_IDENTIFIER, mas o ANSI_NULLS costuma aparecer junto (a própria mensagem de erro sempre indica exatamente qual(is) opção(ões) precisa(m) ser corrigida(s)).

  1. SOLUÇÃO

Execute a instrução abaixo na conexão/sessão que está executando o comando, ou inclua-a no início do código da procedure utilizada pela planilha:

SET QUOTED_IDENTIFIER ON;
SET ANSI_NULLS ON;
(inclua a segunda linha só se a mensagem de erro também citar ANSI_NULLS)

Importante — quando o problema está numa procedure: essas opções ficam gravadas como metadado da procedure no momento em que ela é criada/alterada. Ou seja, não basta rodar o SET antes de chamar a procedure existente — é preciso recriar/alterar a procedure com o SET como primeira instrução do batch, antes do ALTER PROCEDURE/CREATE PROCEDURE:

SET QUOTED_IDENTIFIER ON;
SET ANSI_NULLS ON;
GO
ALTER PROCEDURE [nome_da_procedure]
AS
BEGIN
    -- corpo da procedure
END

Importante — quando o problema está numa indexed view/coluna computada: se o objeto com problema for uma view indexada ou um índice sobre coluna computada (não uma procedure), a opção também precisa estar correta no momento da criação desse objeto — um simples SET na sessão de quem consulta não corrige um objeto já criado com metadado incorreto; é necessário recriar o objeto.

Se o erro ocorrer em uma planilha conectada via ODBC/OLEDB, verifique também as configurações do driver/connection string, já que alguns drivers antigos definem essas opções como OFF por padrão na conexão.

Após a correção, atualize a planilha novamente e confirme que o erro não retorna.

Nota: esse ponto foi levantado a partir de um tópico do fórum publicado por Frederico Neves, com a causa/solução validada e complementada com as observações acima.

Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos
A verificação do CAPTCHA é obrigatória.

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo