Saya punya beberapa pertanyaan yang dipanggil dari aplikasi web C # .NET yang selalu cepat untuk saya (saya adalah admin lokal di SQL Server) tetapi untuk sekelompok pengguna (grup domain dengan izin yang diperlukan), permintaannya sangat lambat untuk titik itu habis dalam aplikasi.
Apa yang menyebabkan kueri yang sama persis berjalan berbeda untuk pengguna yang berbeda?
Info lebih lanjut:
- Permintaannya adalah SQL inline dalam kode C #, bukan prosedur tersimpan
- Aplikasi ini menggunakan otentikasi domain dan baik pengguna maupun saya sendiri menjalankan kueri melalui aplikasi
- Sepertinya masalah adalah paket yang berbeda dan ada yang di-cache sehingga itulah sebabnya berbeda untuk pengguna yang berbeda. Sesuatu memengaruhi cache karena sekarang permintaannya lambat untuk saya melalui aplikasi dan cepat di SQL Server Management Studio.
exact same query
), seharusnya tidak menjadi parameter sniffing (pengguna mendapatkan rencana yang buruk untuk parameter yang salah), tetapi pengguna mendapatkan rencana berbeda untuk parameter yang sama (s). Itu bisa karena pengaturan seperti quoted_identifier
dan arithabort
, yang dapat Anda bandingkan sys.dm_exec_sessions
untuk pengguna cepat dan pengguna lambat, atau bisa juga karena mereka memiliki skema default yang berbeda dan objek direferensikan tanpa awalan skema. Parameter mengendus mungkin masih terlibat (karenanya mengapa salah satu dari mereka memiliki rencana yang buruk).