Eu tenho alguns clientes que às vezes executam algumas consultas muito caras "não permitidas".
Eu os localizei usando Eventos Estendidos.
É possível rejeitar essas consultas automaticamente? Eu conheço a instrução SQL, então seria capaz de pegá-los usando o evento "sql_text" no EE.
Mas não encontrei uma maneira de executar nenhuma ação no EE quando, por exemplo, um determinado evento está acontecendo.
Ou existe outra maneira de contornar isso?
As principais opções são o limite de custo do governador de consulta e o Administrador de recursos .
O primeiro é um pouco limitado porque se aplica a todas as consultas e as limita com base no custo estimado , que pode ser muito impreciso.
Além disso, o SQL Server Management Studio apresenta problemas
SET QUERY_GOVERNOR_COST_LIMIT 0
ao se conectar (com as opções do SSMS definidas como padrão). Isso substitui a configuração no nível da instância e, portanto, torna essa opção bastante ineficaz.A melhor opção é o Resource Governor (se estiver disponível para você) quando combinado com:
A atualização adiciona a configuração de tempo limite da CPU ao grupo de trabalho do Resource Governor REQUEST_MAX_CPU_TIME_SEC no SQL Server 2014, 2016 e 2017
Não é possível gerenciar isso com Eventos Estendidos.
Suas outras opções foram descritas por Dominique Boucher :
Erik Darling tinha uma sugestão semelhante:
Obrigado Paul, tive problemas
governor_cost_limit
para entrar em ação ao fazer um teste no SSMS, mas como você disse, o SSMS parece anular a configuração de todo o servidor.E encontrei a opção no SSMS aqui:
E, claro, a opção de todo o servidor na GUI (em propriedades do servidor):
Para configurá-lo pela instrução SQL:
De learn.microsoft.com
Depois de definir a opção SSMS, ela agora é ativada quando faço um teste. Ele cancelará a consulta quase imediatamente (quando o servidor tiver calculado uma estimativa), não quando a consulta tiver decorrido os segundos especificados. Eu recebo este "erro" do servidor:
Ansioso para receber meus primeiros e-mails/telefonemas dos clientes reclamando. Eu perdi horas com esses problemas de tempo limite do SQL.