2014-03-07 83 views
0

我有一個ASP.NET MVC3項目訪問SQL Server 2008 R2數據庫。 如果我在運行時運行語句,30秒後會出現超時。 在SQL服務器管理工​​作室中運行相同的語句時,沒有超時,我在3秒後得到一個可接受的結果。 儘管這是一個測試環境,但似乎我是唯一一個在我的管理工作室中從打開的窗口進行睡眠過程的人。 要訪問我用 System.Data.SqlClient的 SQL服務器和存儲都在web.config 當控制器要訪問我取連接字符串數據庫連接字符串超時30秒後,SQL Server 2008 R2上沒有超時

Data Source=192.168.111.111;Initial Catalog=agkamed_dev;Persist Security Info=True;User ID=test;Password=wrongpassword;MultipleActiveResultSets=true;

,另外設置

SET TRANSACTION ISOLATION LEVEL SNAPSHOT

請問,如果需要任何進一步的信息。

問題:什麼是ASP.NET端長時間延遲的責任?

+0

我猜想執行計劃,SQL Server可以爲管理工作室和.net使用不同的執行計劃。 –

+0

是完整的錯誤 - 「連接到服務器超時」還是有其他東西。你會複製粘貼在你的問題確切的錯誤? – Leron

+0

是的,那應該是完整的錯誤。這裏是德國的原始信息 「Timeout abgelaufen。Das Zeitlimit wurde vor dem Beenden des Vorgangsüberschrittenoder der Server reagiert nicht。」意思是「Timeout out out」,超出時間限制,或者服務器沒有迴應。「 –

回答

0

從C#和SQL Server Management Studio執行查詢的性能/結果差異通常歸因於ANSI設置的差異。

注意SSMS將默認設置ANSI_NULLS,ANSI_PADDING,ANSI_NULLS上,這將不會是C#的情況下(見工具/選項/查詢執行/ SQL服務器/ ANSI)

我建議你試驗並逐個設置它們,直到獲得與C#代碼相同的行爲。然後修改您的查詢,使其不依賴於這些設置。

+0

好主意,但採用執行參數沒有任何區別: 'set nocount on; set arithabort on; set noexec off; set parseonly off; 設置統計時間關閉; set concat_null_yields_null on; 設置統計io off; set query_governor_cost_limit 0; set deadlock_priority NORMAL; 設置事務隔離級別讀提交; set quoted_identifier on; set ansi_null_dflt_on on; 設置implicit_transactions off; 設置cursor_close_on_commit off; set ansi_padding on; set ansi_warnings on; 設置ansi_nulls on –

0

我無法找到該問題的答案。我通過在SQL服務器上創建一個函數來解決這個錯誤,儘管我寧願爲這個問題找到一個解決方案,因爲它不是第一個出現這個問題的人。