我有一个在两台服务器上运行的应用程序。当我尝试使用SQL事件探查器跟踪保存数据时在我的数据库中进行的操作。
在尝试在数据库中插入数据后,我在服务器 A 中收到了IF @@TRANCOUNT > 0 ROLLBACK TRAN
。在另一台服务器上,我在服务器 B 中收到IF @@TRANCOUNT > 0 COMMIT TRAN
。
任何想法导致回滚转换的原因是什么?我在两台服务器上使用相同的应用程序。
答案 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你必须等同关闭(提交或回滚)。