关于sql server:COMMIT TRANSACTION请求没有对应的BEGIN TRANSACTION
The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION
这是我在生产服务器上遇到的一个奇怪问题。过去两周发生了两次,这是一个流量很大的服务器。
我们在 Web 服务中有一些代码执行
The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.
在前两次插入和更新之间,我们调用了另一个 Web 服务,因此在前两次插入和调用
最初我们虽然可能是应用程序池被回收,但将其更改为在半夜回收。现在我不确定是什么导致 SQL 服务器忘记调用
这个网络服务确实被调用了很多次。有没有人见过这样的东西?我现在完全不知所措...
非常感谢任何帮助或建议!
相关讨论
- 还有一个与此相关的错误-support.microsoft.com/kb/810100/en-us
看起来你的事务失败了,被回滚了,没有什么可以提交
这样的例子
|
1
2 |
CREATE TABLE BlaTest(id INT PRIMARY KEY NOT NULL)
GO |
现在运行这个
|
1
2 3 4 5 6 |
BEGIN TRAN
INSERT BlaTest VALUES('a') COMMIT TRAN |
这是错误
|
1
2 3 4 |
Msg 245, Level 16, State 1, Line 3
Conversion failed when converting the varchar value 'a' to data type int. Msg 3902, Level 16, State 1, Line 2 The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION. |
这将毫无问题地运行
|
1
2 3 4 5 6 |
BEGIN TRAN
INSERT BlaTest VALUES(5) COMMIT TRAN |
一篇关于事务的好文章是 Erland Sommarskog 在 SQL 2005 及更高版本中的错误处理
相关讨论
- 这对我没有任何意义。如果交易失败,错误信息会不会不一样?
-
1 - @sophtware 对此的简单解决方法是添加
IF @@TRANCOUNT > 0 COMMIT TRAN 。这将检查未结交易。你可以在ROLLBACK 之前做同样的事情。 - 现在它完全有道理!谢谢!我会检查一下。也许我应该查看日志以获取有关交易的更多信息?
我的问题是我的 BEGIN TRAN 和 COMMIT TRAN 周围需要一个 BEGIN 和 END。
|
1
2 3 4 5 6 7 8 |
BEGIN
BEGIN TRAN INSERT BlaTest VALUES(5) COMMIT TRAN |
相关讨论
- 我会说你是不正确的。
我也有同样的问题。这就是我为解决它所做的。
在我检查了
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
ALTER procedure [dbo].[DeactivateUser]
@UserId bigint, @LoginEmail Nvarchar(100), @merchantId int as Begin Begin tran update Users set end |
相关讨论
- 它不是发生在我身上的一个例子。所以我分享了答案,任何会如何看待这个。谢谢