我们有一个存储过程,它通过具有不同 MS SQL 2008 数据库的链接服务器启动分布式事务。
我们用
SET XACT_ABORT ON;
并且
BEGIN TRY / CATCH blocks
围绕事务捕获任何错误并将错误代码和消息返回给调用客户端。
但是,当分布式事务中的命令失败时,似乎 MS DTC 正在接管控制,而我们的 catch 块不能“优雅地”回滚并返回错误消息等。相反,会引发错误:Microsoft Distributed Transaction Coordinator (MS DTC) 已取消分布式事务。(错误 1206)。
有什么方法可以让 catch 块捕获这样的分布式 tx 错误?