【问题标题】:how to use SET XACT_ABORT ON without transaction如何在没有事务的情况下使用 SET XACT_ABORT ON
【发布时间】:2018-05-08 14:13:00
【问题描述】:

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

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。它正在工作,但没有回滚。

【问题讨论】:

  • 我的问题还在继续。

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


【解决方案1】:

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

【讨论】:

  • 我将第一次回滚错误地插入到我的伪代码中。我的原始代码没有两次。所以我的问题还在继续。
猜你喜欢
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-21
  • 2012-09-13
相关资源
最近更新 更多