未提交的事务出错

时间:2016-03-21 09:42:43

标签: sql sql-server

我在SQL Server Management Studio中运行了以下查询:

BEGIN TRANSACTION [Tran1] 
BEGIN TRY
    UPDATE SomeTable 
    SET value = 0 
    WHERE username = 'test' 
       OR [PR_RequestDate] < DATEADD(day, -2, GETDATE())

    INSERT INTO SomeTable (username, value) 
    VALUES('test', 'test')

    COMMIT TRANSACTION [Tran1]
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION [Tran1]
END CATCH  
GO

执行它之后,我尝试在同一个表上运行的每个其他查询都会永远运行,当我尝试存在SQL Server Management Studio时,我会收到一条警告,指出存在未提交的事务。

我的查询到底出了什么问题?我该如何解决?

1 个答案:

答案 0 :(得分:0)

Typos将立即被捕获,根据Ivan的建议,我没有向我们展示整个信息。由于更新或插入错误以及整个查询尝试回滚,您收到未提交的事务错误。您可以执行以下操作总消息和trancount ,,

set xact_abort on--to rollback entire batch,rollback in catch is redundant
begin try
begin tran
commit
end try
begin catch
select @@trancount--gives me number of open transactions
select error_message()
rollback tran
end catch