Sempre que executo esta consulta:
SELECT trade_detail_id,trade_side_id,id,is_last,is_xml_detail_filled,save_date_time,trade_id,trade_ligne_id,type,xml_detailled_info,xml_state
FROM some_table
WHERE (NOT (is_xml_detail_filled =1))
O SQL Server envia de volta este erro:
Msg 8649, Nível 17, Estado 1, Linha 12
A consulta foi cancelada porque o custo estimado desta consulta (1191) excede o limite configurado de 12. Entre em contato com o administrador do sistema.
Em sp_configure
, o limite de custo do governador de consulta é definido como 0.
Em Propriedades do servidor -> conexões , "Usar o controlador de consulta para evitar consultas de longa execução" está desabilitado.
DBCC USEROPTIONS
não menciona nada
Então por que o erro?
Se eu usar SET QUERY_GOVERNOR_COST_LIMIT
, o erro desaparece, mas eu não deveria precisar usar esse comando aqui se não houver limites em todo o servidor.
Instância do SQL Server 2019 CU28 no Windows 2019.
Isso não envolve o governador de recursos, opções de usuário ou consultas de longa duração; é uma configuração de sistema baseada em custos estimados (embora haja um
SET
comando para fazer isso na sessão atual, suspeito que não seja daí que ele vem, e não apareceria deDBCC USEROPTIONS
forma alguma). Verifique:Meu palpite é
value_in_use
que retornará12
(mesmo quevalue
mostre0
, o que pode significar que alguém corrigiu o valor, mas não executouRECONFIGURE
). Para alterá-lo, você pode defini-lo como0
(sem limite) ou algo> 1191
assim para que pelo menos essa consulta específica possa ser executada. Por exemplo:Se esse não for o problema, ele pode ter sido definido em SSMS > Ferramentas > Opções > Execução de consulta > SQL Server > Avançado >
SET QUERY_GOVERNOR_COST_LIMIT
, o que substituirá a configuração do servidor:O padrão é 0, mas se você o substituiu para testar algo, ele será verdadeiro para todas as suas sessões. Se você não puder alterar a configuração ou não tiver acesso à máquina onde estava recebendo esse erro, tente executar a mesma consulta de qualquer outra estação de trabalho, no próprio servidor ou de outro aplicativo (C#, PowerShell, etc.).