数据库死锁,研究好几天了,达人们,帮个忙~~
很奇怪,我以前用SQL 2000,从来没能死锁的情况发生,SQL2005现在统计在线人数(读/写)时,会死锁一个表。
private void Stat_Onlone(HttpApplication app)
{
string currentSessionID = app.Session.SessionID;
CurrentOnline currentOnline = new CurrentOnline();
bool isExisitSessionID = currentOnline.IsExisit(currentSessionID);//调用存储过程:查询数据库是否有此sessionid
if (isExisitSessionID)
currentOnline.UpdateSessionID(currentSessionID);//调用存储过程:更新此sessionid的最新访问时间为当前时间
else
currentOnline.AddNew(currentSessionID, app.Request.UserHostAddress, DateTime.Now);//调用存储过程:新增此sessionid
currentOnline.Clear();//调用存储过程:清理登陆超时的sessionid信息
int currentOnlineCount = currentOnline.Stat();//调用存储过程:查询数据库,统计在线人数
app.Application["OnLine"] = currentOnlineCount;
}
注:每个存储过程中都是单个语句。
引发死锁的是currentOnline.UpdateSessionID(currentSessionID);或currentOnline.AddNew(currentSessionID, app.Request.UserHostAddress, DateTime.Now);
各位达人帮忙看看,究竟是什么原因引起的,谢谢。