ASP.NET 獨佔操作方法,防止用戶反覆提交造成數據庫處理失敗

 今天在執行一個存儲過程中碰到了一個問題。系統裏,有一個存儲過程,執行時間比較長,如果在網頁上用戶同時提交的數量比較多的話,裏面的事務就會執行失敗,造成處理錯誤。

試驗修改了這個事務的級別,從read uncomitted 改到serializable,但是都還是會出錯,分析原因,最有可能的是數據庫資源不夠,無法同時處理多個大規模的事務。既然數據庫這一塊不能解決問題,那麼,就從調用的程序入手,限定爲完全順序執行,於是……解決問題。 現將方法貼出來,請各位指教。

環境 ASP.NET, 數據庫 SQLServer 2005

代碼很簡單,如下

 

Code
function RunProcedure()

{
  
if (Application["lockobj"]==null) Application["lockobj"]=new Object();
  
lock(Application["lockobj"])
  {
    
// exec sp
    
// 較長時間的等待, 10秒鐘左右
  }
  
//其他處理
}

 

 

這樣保證不管有多少用戶同時進入,只能有一個用戶來運行這個存儲過程,防止了錯誤,唯一的問題在於,用戶等待的時間會長一點……

請大家指教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章