我有一個選擇查詢,如果我從SQL Server Management Studio(它已經意味着它是一個MSSQL數據庫)運行它需要大約10秒運行。 Select查詢在一個有幾個連接的視圖上工作,這就是執行原始SELECT語句需要大約10秒鐘的原因。LINQ選擇查詢結果超時
但是,等價的LINQ語句最終會出現超時異常。爲什麼會發生這種情況以及如何解決問題?
我有一個選擇查詢,如果我從SQL Server Management Studio(它已經意味着它是一個MSSQL數據庫)運行它需要大約10秒運行。 Select查詢在一個有幾個連接的視圖上工作,這就是執行原始SELECT語句需要大約10秒鐘的原因。LINQ選擇查詢結果超時
但是,等價的LINQ語句最終會出現超時異常。爲什麼會發生這種情況以及如何解決問題?
我曾經有過類似的情況,當一個存儲的過程從SSMS調用時花費大約1秒鐘執行,但是當從前端應用程序調用同一過程(具有相同參數)時超時。我運行了SQL Profiler,看到當我從前端調用存儲過程時得到的執行計劃不同於我從SMSS運行存儲過程時得到的執行計劃(直到日期我不知道爲什麼會發生這種情況)
因此,只要嘗試運行SQL事件探查器來查看是否由於某種原因查詢優化器在使用LINQ執行查詢時選擇了不同的查詢計劃。 (您需要更改探查器中的標準選項以使其顯示查詢計劃)
ARITHABORT默認情況下在SSMS中爲ON,而默認情況下爲SqlClient連接爲OFF。
看看是否解決您的問題:
new SqlCommand("SET ARITHABORT ON", connection).ExecuteNonQuery();
你能後的LINQ和SQL查詢兩者兼而有之? – scmccart 2010-11-18 21:42:59
返回多少數據? – 2010-11-18 21:49:05
@Albin:只返回56條記錄。 – 2010-11-18 21:56:26