如何在没有事务的情况下使用SET XACT_ABORT ON

时间:2018-05-08 14:13:01

标签: sql sql-server sql-server-2008 tsql transactions

我有一个链接服务器并尝试删除链接服务器中的表上的内容。我正在使用事务并尝试在存储过程中捕获如下。

BEGIN TRY
BEGIN TRANSACTION
DELETE FROM [server].[database].[dbo].[Table]
.
.
.
COMMIT TRANSACTION
END TRY
BEGIN CATCH
PRINT(ERROR_MESSAGE())
ROLLBACK TRANSACTION
END CATCH

使用此代码我在事务中有很多插入和删除。它给出了这个错误:OLE DB提供程序" SQLNCLI11"对于链接服务器"服务器"返回消息"没有事务处于活动状态。"

我了解到如果我使用SET XACT_ABORT ON,如果在运行时遇到任何错误,它将丢弃任何进程,它将自动回滚。

我试图在没有交易的情况下使用SET XACT_ABORT。它工作但没有回滚。

1 个答案:

答案 0 :(得分:0)

您在代码中有两次回滚事务。提交后,它将无法找到任何活动事务进行回滚。删除第一次回滚交易并检查。