Mam kilka zapytań wywoływanych z aplikacji sieci Web C # .NET, które są dla mnie zawsze szybkie (jestem lokalnym administratorem na serwerze SQL), ale dla grupy użytkowników (grupa domen z wymaganymi uprawnieniami) zapytanie jest bardzo wolne moment, w którym upływa limit czasu w aplikacji.
Co spowodowałoby, że dokładnie to samo zapytanie działałoby inaczej dla różnych użytkowników?
Więcej informacji:
- Zapytanie to wbudowany SQL w kodzie C #, a nie procedura składowana
- Aplikacja korzysta z uwierzytelniania domeny, a ja i użytkownik uruchamiamy zapytanie za pośrednictwem aplikacji
- Wygląda na to, że problem dotyczy różnych planów i jeden został zapisany w pamięci podręcznej, dlatego był inny dla różnych użytkowników. Coś wpływa na pamięć podręczną, ponieważ teraz zapytanie jest dla mnie wolne przez aplikację i szybkie w SQL Server Management Studio.
exact same query
), nie powinno to być wąchanie parametrów (użytkownicy otrzymują zły plan dla niewłaściwych parametrów), ale użytkownicy otrzymują różne plany dla tego samego parametru (s). Może to być spowodowane ustawieniami, takimi jak quoted_identifier
i arithabort
, które można porównać sys.dm_exec_sessions
dla szybkiego i powolnego użytkownika, lub może to być spowodowane tym, że mają różne domyślne schematy, a obiekty są przywoływane bez prefiksu schematu. Wciąż może być zaangażowane wąchanie parametrów (dlatego dlaczego jeden z nich ma zły plan).