Saya pernah mengalami masalah serupa yang muncul di masa lalu, jadi saya ingin melihat resolusi untuk pertanyaan ini. Komentar Aaron Bertrand pada OP menyebabkan Waktu kueri habis saat dijalankan dari web, tetapi sangat cepat saat dijalankan dari SSMS , dan meskipun pertanyaannya bukan duplikat, jawabannya mungkin sangat cocok untuk situasi Anda.
Intinya, sepertinya SQL Server mungkin memiliki rencana eksekusi cache yang rusak. Anda mencapai rencana buruk dengan server web Anda, tetapi SSMS mendarat di rencana yang berbeda karena ada pengaturan yang berbeda pada flag ARITHABORT (yang jika tidak, tidak akan berdampak pada kueri/proc tersimpan khusus Anda).
Lihat ADO.NET memanggil T-SQL Stored Procedure menyebabkan SqlTimeoutException untuk contoh lain, dengan penjelasan dan penyelesaian yang lebih lengkap.