不同的@@ Trancount结果

时间:2015-05-07 05:32:55

标签: sql sql-server sql-server-2000

我有一个在两台服务器上运行的应用程序。当我尝试使用SQL事件探查器跟踪保存数据时在我的数据库中进行的操作。
在尝试在数据库中插入数据后,我在服务器 A 中收到了IF @@TRANCOUNT > 0 ROLLBACK TRAN。在另一台服务器上,我在服务器 B 中收到IF @@TRANCOUNT > 0 COMMIT TRAN

任何想法导致回滚转换的原因是什么?我在两台服务器上使用相同的应用程序。

2 个答案:

答案 0 :(得分:0)

我认为你的数据库对象中有IF @@TRANCOUNT > 0 ROLLBACK TRAN

要在数据库对象中查找文本,可以尝试以下查询:

DECLARE @Search VARCHAR(255)
SET @Search='IF @@TRANCOUNT > 0 ROLLBACK TRAN'

SELECT DISTINCT so.name AS [Object_Name]
                ,so.type_desc AS [Type]
FROM sys.sql_modules AS ssm 
INNER JOIN sys.objects AS so ON ssm.object_id = so.object_id
WHERE ssm.definition LIKE '%' + @Search + '%'
ORDER BY [Type], [Object_Name]

答案 1 :(得分:0)

每个BEGIN TRAN都会针对特殊需求打开一个事务(显式)并增加@@ TRANCOUNT,然后你可以使ROLLBACK TRAN或COMMIT TRAN依赖条件。

所以,你找到每个BEGIN TRAN你必须等同关闭(提交或回滚)。