在分布式环境中处理Try Catch和Transaction Rollback / Commit

时间:2015-12-09 05:57:13

标签: sql-server

我想知道处理分布式服务器时处理事务回滚/提交和异常处理的最佳方法。

情景如下:

Server1.StroredProcude1
Begin Transaction
Try

--Some insertion here
Server2.StoredProcedure
Commit Transaction
Catch
Rollback Transaction
RETURN @Msg = a user friendly message
End

Server2 的存储过程中,我也在进行一些插入。

  1. 我是否必须在 Server2 存储过程中使用try catch,否则它将在 Server1 本身中捕获。

  2. 我在 Server1 存储过程中使用“分布式事务”关键字,因此它足以在两个服务器中提交/回滚事务,或者我必须在中实现与事务相关的事务server2 存储过程。

  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

请点击此处了解详情:https://msdn.microsoft.com/en-GB/library/ms188386.aspx

  

执行BEGIN的SQL Server数据库引擎实例   DISTRIBUTED TRANSACTION语句是事务发起者和   控制交易的完成。当一个后续的COMMIT   发出TRANSACTION或ROLLBACK TRANSACTION语句   会话,控制实例请求MS DTC管理   跨所有实例完成分布式事务   参与。