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

前端之家收集整理的这篇文章主要介绍了sql-server – COMMIT TRANSACTION请求没有相应的BEGIN TRANSACTION前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个奇怪的问题,我正在一个生产服务器上运行.现在在过去两周里发生了两次,这是一个获得大量流量的服务器.

我们在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

猜你在找的MsSQL相关文章