Tenho algumas consultas chamadas de um aplicativo Web C # .NET que são sempre rápidas para mim (eu sou um administrador local no SQL Server), mas para um grupo de usuários (grupo de domínio com permissões necessárias), a consulta é incrivelmente lenta para o ponto de tempo limite no aplicativo.
O que faria com que exatamente a mesma consulta fosse executada de maneira diferente para usuários diferentes?
Mais informações:
- A consulta é SQL embutido no código C #, não um procedimento armazenado
- O aplicativo usa autenticação de domínio e o usuário e eu executamos a consulta pelo aplicativo
- Parece que o problema é de planos diferentes e um foi armazenado em cache; é por isso que foi diferente para usuários diferentes. Algo está afetando o cache, porque agora a consulta é lenta para mim por meio do aplicativo e rápida no SQL Server Management Studio.
exact same query
), não deve ser o sniffing de parâmetros (os usuários obtêm um plano ruim para o (s) parâmetro (s) errado (s)), mas os usuários estão recebendo planos diferentes para o mesmo parâmetro (s) Pode ser por causa de configurações como quoted_identifier
e arithabort
, que você pode comparar sys.dm_exec_sessions
para o usuário rápido e o usuário lento, ou porque eles têm esquemas padrão diferentes e objetos são referenciados sem o prefixo do esquema. A detecção de parâmetros ainda pode estar envolvida (daí o motivo de um deles ter um plano ruim).