Ich habe einige Abfragen von einer C # .NET-Webanwendung aufgerufen, die für mich immer schnell sind (ich bin ein lokaler Administrator auf dem SQL Server), aber für eine Gruppe von Benutzern (Domänengruppe mit erforderlichen Berechtigungen) ist die Abfrage unglaublich langsam der Punkt, an dem es in der Anwendung abläuft.
Was würde dazu führen, dass genau dieselbe Abfrage für verschiedene Benutzer unterschiedlich ausgeführt wird?
Mehr Info:
- Die Abfrage ist Inline-SQL im C # -Code, keine gespeicherte Prozedur
- Die App verwendet die Domänenauthentifizierung und sowohl der Benutzer als auch ich führen die Abfrage über die App aus
- Es scheint, dass das Problem unterschiedliche Pläne sind und einer zwischengespeichert wurde, weshalb es für verschiedene Benutzer unterschiedlich war. Etwas wirkt sich auf den Cache aus, da die Abfrage jetzt für mich über die App langsam und in SQL Server Management Studio schnell ist.
exact same query
), sollte es sich nicht um Parameter-Sniffing handeln (Benutzer erhalten einen schlechten Plan für die falschen Parameter), sondern Benutzer erhalten unterschiedliche Pläne für denselben Parameter (s). Dies kann an Einstellungen wie quoted_identifier
und liegen arithabort
, die Sie sys.dm_exec_sessions
für den schnellen und den langsamen Benutzer vergleichen können, oder daran, dass sie unterschiedliche Standardschemata haben und Objekte ohne das Schema-Präfix referenziert werden. Möglicherweise ist das Parameter-Sniffing weiterhin beteiligt (daher hat einer von ihnen einen schlechten Plan).