SQL2000(SP4) + vb.net应用客户端,登录成功后,又被回滚。

jsjzzh 2011-11-18 04:26:34
SQL2000(SP4) + vb.net应用客户端。

客户端查询了4次,都超时了。而接下来的登录更新处理,从log上看都通过了。
而且我手上有通过后打印的小票,是从数据库里面查询出来的。说明当时已经登录成功了。
接下来12:00以后会对当天数据进行备份,但是从备份还原后没有找到成功登录的数据。
数据恢复到了结算前的状态。

出错前发生过超时错误如下:
2011-11-15 21:29:13 Microsoft OLE DB Provider for SQL Server
2011-11-15 21:29:13 ExecuteReaderInternal
2011-11-15 21:29:13 超时已过期
2011-11-15 21:29:13 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
在 ClassLib.F009.Btn_SelectSave_Click(Object sender, EventArgs e)
2011-11-15 21:33:52 Microsoft OLE DB Provider for SQL Server
2011-11-15 21:33:52 ExecuteReaderInternal
2011-11-15 21:33:52 超时已过期
2011-11-15 21:33:52 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
在 ClassLib.F009.Btn_SelectSave_Click(Object sender, EventArgs e)

2011-11-15 21:34:31 Microsoft OLE DB Provider for SQL Server
2011-11-15 21:34:31 ExecuteReaderInternal
2011-11-15 21:34:31 超时已过期
2011-11-15 21:34:31 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
在 ClassLib.F009.Btn_SelectSave_Click(Object sender, EventArgs e)
2011-11-15 21:35:12 Microsoft OLE DB Provider for SQL Server
2011-11-15 21:35:12 ExecuteReaderInternal
2011-11-15 21:35:12 超时已过期
2011-11-15 21:35:12 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
在 ClassLib.F009.Btn_SelectSave_Click(Object sender, EventArgs e)


登录代码结构如下(登录程序未发生异常):
Try
Dim tran As OleDb.OleDbTransaction
tran = DBConnection.BeginTransaction

..........业务登录代码

tran.Commit()
tran.Dispose()
Me.Close()

Catch ex As Exception
tran.Rollback()
Logger.WriteLog(ex, DBConnection)
MsgBox(ex.Message, MsgBoxStyle.Critical, Constant.CON_TITLE_ERR)
Finally
tran.Dispose()
End Try

我的推测,请帮助分析可能性。

由于网络原因,导致软件超时,并发出通知SQL数据库回滚指令。但回滚指令也超时了(或在SQLServer端阻塞了)。
而接下来,操作员马上进行了3次登录,从log和打印的小票看,这3次登录都成功了。
这时回滚指令开始执行,按照时间点进行回滚,导致已经登录的3条数据也被回滚了。

不知道这的事是否可能发生?
...全文
79 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧