J'ai quelques requêtes appelées à partir d'une application Web C # .NET qui sont toujours rapides pour moi (je suis un administrateur local sur SQL Server) mais pour un groupe d'utilisateurs (groupe de domaine avec les autorisations requises), la requête est incroyablement lente à le point qu'il expire dans l'application.
Qu'est-ce qui ferait que la même requête exacte s'exécuterait différemment pour différents utilisateurs?
Plus d'informations:
- La requête est SQL en ligne dans le code C #, pas une procédure stockée
- L'application utilise l'authentification de domaine et l'utilisateur et moi-même exécutons la requête via l'application
- Il semble que le problème réside dans différents plans et que l'un ait été mis en cache, c'est pourquoi il était différent pour différents utilisateurs. Quelque chose affecte le cache car maintenant la requête est lente pour moi via l'application et rapide dans SQL Server Management Studio.
exact same query
), cela ne devrait pas être un reniflement de paramètres (les utilisateurs obtiennent un mauvais plan pour le ou les mauvais paramètres), mais les utilisateurs obtiennent plutôt des plans différents pour le même paramètre (s). Cela peut être dû à des paramètres tels que quoted_identifier
et arithabort
, que vous pouvez comparer sys.dm_exec_sessions
pour l'utilisateur rapide et l'utilisateur lent, ou cela peut être dû au fait qu'ils ont différents schémas par défaut et que les objets sont référencés sans le préfixe de schéma. Le reniflage de paramètres peut encore être impliqué (d'où la raison pour laquelle l'un d'eux a un mauvais plan).