Estamos no SQL Server 2016
O Query Store está ativado no banco de dados em questão.
Tivemos alguns problemas de tempo limite relatados em um batchjob noturno e localizamos a consulta em questão.
A consulta é de uma aplicação .Net, gerada por algum framework
Eu também encontrei a consulta no Query Store. Mas se eu usar 'consultas rastreadas', todas as execuções são relatadas como boas, sem tempos limite (e sem erros)
E se eu consultar o QueryStore para esse queryID específico, todas as execuções terão resultado 'Regular'
Se eu configurar uma sessão de eventos estendidos para capturar tempos limite, os tempos limite da consulta são realmente coletados e posso ver que a chamada real da consulta é feita com
EXEC SP_EXECUTESQL N'querystring'
isso de alguma forma engana o querystore para pensar que está tudo bem, não importa qual seja o resultado?
Saudações
Peter
As consultas executadas com
sys.sp_executesql
podem definitivamente ser registradas no Query Store como "Aborted" ou "Exception". Aqui está uma pequena reprodução. Primeiro, criei um banco de dados com configurações impraticáveis do Query Store:Em seguida, executei algum código .NET que exercia os seguintes cenários:
Veja como isso aconteceu no evento Extended Events "rpc_completed":
Incorporei um comentário de
/* Track Me */
em cada uma das consultas para poder encontrá-las no repositório de consultas:Como esperado, vemos Regular, Exception e, em seguida, três consultas Aborted.
Tudo isso para dizer que não acho que a discrepância possa ser explicada pelo uso de
sys.sp_executesql
.Se puder detalhar mais:
Então você pode conseguir mais ajuda para rastrear isso.