2012-10-04 131 views
0

我正在使用LINQ to SQL來訪問存儲過程。這在我的本地sql服務器上正常工作。但是,一旦我指向內部網絡中的另一臺服務器,我就會超時。在SQL事件探查器中,我可以看到發送到問題服務器的查詢。這應該意味着查詢命中服務器並執行正確?在一臺服務器上LINQ to SQL超時而不是其他服務器

我可以直接在問題服務器上運行LINQ輸出而沒有問題。這可能不是一個代碼問題,而是一些問題與SQL Server服務器配置?我應該檢查什麼來排除故障?

+0

當無限制時,該sproc將返回20k行。手動執行需要超過30秒。我的連接字符串('連接超時')設置爲500。 – 4thSpace

回答

2

連接超時不同於命令超時。

看到:What is the difference between SqlCommand.CommandTimeout and SqlConnection.ConnectionTimeout?

的總結是連接超時的時間來建立連接的數量。

命令超時是讓命令運行的時間量。不僅需要多長時間才能獲得第一條記錄,但需要多長時間才能獲取整個數據集。

如果您看到在SQL事件探查器中顯示的查詢,那麼它正在發送。所以你基本上達到了30秒的命令超時默認限制。

我建議先將命令的超時時間改爲500,然後看看哪裏需要你。然後,我會開始做一些性能分析,以確定爲什麼需要這麼長時間。也許你可以刪除一些所需的數據,甚至添加額外的索引以更好地支持查詢。

相關問題