- 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'.
- 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)).
- 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; (inclua a segunda linha só se a mensagem de erro também citar ANSI_NULLS)
SET ANSI_NULLS ON;
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
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo