加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – COMMIT TRANSACTION请求没有相应的BEGIN TRANSACT

发布时间:2020-12-12 08:23:38 所属栏目:MsSql教程 来源:网络整理
导读:这是一个奇怪的问题,我正在一个生产服务器上运行.现在在过去两周里发生了两次,这是一个获得大量流量的服务器. 我们在Web服务中有一些执行BEGIN TRAN的代码,然后运行几个SQL查询(两个插入后跟更新).然后在最后执行一个COMMIT.现在两次我们已经在日志中收到了消
这是一个奇怪的问题,我正在一个生产服务器上运行.现在在过去两周里发生了两次,这是一个获得大量流量的服务器.

我们在Web服务中有一些执行BEGIN TRAN的代码,然后运行几个SQL查询(两个插入后跟更新).然后在最后执行一个COMMIT.现在两次我们已经在日志中收到了消息:

The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.

在前两个插入和更新之间,我们调用另一个Web服务,因此在调用COMMIT之前,前两个插入之间可能会有一点延迟,最后一次更新.这可能会导致我们的问题吗?我们在IIS 7和Server 2008 R2上运行(所有更新的应用程序).

最初我们虽然可以将应用程序池重新使用,但是在半夜后将其改为回收.现在我不知道会导致SQL Server忘记对BEGIN TRAN的调用.

这个Web服务确实被调用了很多.有没有人看到过这样的东西?我现在完全失去了…

任何帮助或建议非常感谢!

解决方法

看起来你的事务失败了,回滚了,没有任何提交

这样的事情的例子

CREATE TABLE BlaTest(id INT PRIMARY KEY NOT NULL)
GO

现在运行这个

BEGIN TRAN

INSERT BlaTest VALUES('a')
GO

COMMIT TRAN

这是错误

Msg 245,Level 16,State 1,Line 3
Conversion failed when converting the varchar value 'a' to data type int.
Msg 3902,Line 2
The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.

这将运行没有问题

BEGIN TRAN

INSERT BlaTest VALUES(5)
GO

COMMIT TRAN

关于交易的一篇很好的文章是Erland Sommarskog的Error Handling in SQL 2005 and Later

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读