Web uygulamasından her çağrıldığında delicesine zaman aşımına uğrayan saklı yordamım var.
Sql Profiler'ı çalıştırdım ve zaman aşımına uğrayan çağrıları izledim ve sonunda şunları öğrendim:
- İfadeleri MS SQL Management Studio içinden aynı argümanlarla çalıştırdığınızda (aslında prosedür çağrısını sql profil izlemesinden kopyaladım ve çalıştırdım): Ortalama 5 ~ 6 saniye içinde bitiyor.
- Ancak web uygulamasından çağrıldığında, 30 saniyeden fazla sürüyor (izleme olarak), bu nedenle web sayfam o zamana kadar gerçekten zaman aşımına uğradı.
Web uygulamamın kendi kullanıcısı olması dışında her şey aynı (aynı veritabanı, bağlantı, sunucu vb.) Web uygulamasının kullanıcısıyla doğrudan stüdyoda sorgu çalıştırmayı denedim ve 6'dan fazla sürmüyor sn.
Neler olduğunu nasıl anlarım?
İz, gecikmenin gerçek prosedürde olduğunu açıkça gösterdiğinden, BLL> DAL katmanlarını veya Tablo adaptörlerini kullandığımız gerçeğiyle hiçbir ilgisi olmadığını varsayıyorum. Tüm düşünebildiğim bu.
DÜZENLE Bu bağlantıda ADO.NET'in ARITHABORT
doğru olarak ayarladığını öğrendim - ki bu çoğu zaman için iyidir, ancak bazen bu olur ve önerilen geçici çözüm, with recompile
depolanan proc'a seçenek eklemek . Benim durumumda çalışmıyor ama buna çok benzer bir şey olduğundan şüpheleniyorum. ADO.NET'in başka ne yaptığını veya özelliklerini nerede bulabileceğimi bilen var mı?