我遇到了一個非常奇怪的問題:存儲過程不會返回,即使數據正確和及時插入。最令人驚訝的是,記錄時間戳字段總是在毫秒內填充,因此數據似乎非常快速地進入表格。但返回從未發生。存儲過程不返回控制到C#代碼
所有這一切的重要部分是,它只發生在負載下 - 個人請求很好。只有當數據庫足夠強調時,這件事纔會開始發生。
任何想法都是受歡迎的,因爲我很少理解什麼是錯的。
這裏被簡化它的C#部分:
try
{
using (var conn = new SqlConnection(connString))
{
conn.Open();
using (var cmd = new SqlCommand(conn, ....)
{
cmd.CommandType = StoredProcedure;
cmd.ExecuteNonQuery();
// THIS NEVER EXECUTES:
ReportSuccess();
}
}
}
catch (TimeoutException)
{
// EXCEPTION HERE
}
,並且存儲過程:
CREATE PROCEDURE dbo.Blah
BEGIN
INSERT dbo.MyTable VALUES (...)
INSERT dbo.MyTable2...
-- Here is where everything stops.
END
UPDATE:我們做了最好的超時和SQL服務器的活動相關,它出現非應用用戶活動導致鎖定。該過程旨在允許非常快速的插入和非常快速的讀取。但是,有些個人會執行相當昂貴的查詢,而實際上並未使用DIRTY READ策略,該策略正在打破脆弱的硬件負載平衡。感謝您的所有提示。
RETURN在哪裏? –
沒有任何價值的回報。通過返回,我的意思是SP永遠不會返回,異常會在C#端被捕獲。 – Schultz9999
你的意思是ExecuteNonQuery()掛起? –