Ho un paio di query chiamate da un'applicazione Web C # .NET che sono sempre veloci per me (sono un amministratore locale su SQL Server) ma per un gruppo di utenti (gruppo di dominio con le autorizzazioni richieste), la query è incredibilmente lenta per il punto in timeout nell'applicazione.
Cosa farebbe in modo che la stessa identica query funzionasse diversamente per utenti diversi?
Ulteriori informazioni:
- La query è inline SQL nel codice C #, non una procedura memorizzata
- L'app utilizza l'autenticazione del dominio e sia io che l'utente eseguiamo la query tramite l'app
- Sembra che il problema riguardi piani diversi e uno sia stato memorizzato nella cache, ecco perché era diverso per utenti diversi. Qualcosa sta influenzando la cache perché ora la query è lenta per me tramite l'app e veloce in SQL Server Management Studio.
exact same query
), non dovrebbe essere lo sniffing dei parametri (gli utenti ottengono un piano errato per i parametri sbagliati), ma piuttosto gli utenti ottengono piani diversi per lo stesso parametro (S). Potrebbe essere a causa di impostazioni come quoted_identifier
e arithabort
, che puoi confrontare sys.dm_exec_sessions
per l'utente veloce e l'utente lento, oppure potrebbe essere perché hanno schemi predefiniti diversi e gli oggetti a cui viene fatto riferimento senza il prefisso dello schema. Lo sniffing dei parametri può essere ancora coinvolto (quindi perché uno di loro ha un piano negativo).