首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TSQL -分布式事务还是本地事务?

TSQL -分布式事务还是本地事务?
EN

Stack Overflow用户
提问于 2016-05-26 08:20:25
回答 1查看 619关注 0票数 1

我在“2012 (SP3)”数据库中有一些SPs。这些SPs可以从VB6应用程序和其他SPs调用,也可以从.Net应用程序调用。

如果从其他SPs或VB6应用程序调用SP,我可以回滚当前事务,并在出现错误/无效输入时使用raiserror提供正确的错误消息。

但是,由于.Net应用程序打开的连接被连接到分布式事务(如果涉及多个WCF服务)(这是一个公司标准,我们使用MS ),所以我不应该回滚事务,我应该只调用raiserror命令。

如果回滚分布式事务,使用raiserror命令引发的所有错误消息都会丢失,而在.Net端则会得到一个异常,其消息是:

Microsoft分布式事务协调器(MS DTC)取消了分布式事务。

如何知道我是在分布式事务中,还是在SPs?中编码时在本地事务中,如果我在分布式事务中,我将不会执行rollback语句。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-06-09 10:32:29

对于那些面临同样问题的人,我找到了一个暂时的解决方案:

我正在检查sys.dm_tran_session_transactions视图。

如果我来自is_enlisted,并且在.Net端启动msdtc事务,那么列.Net就成为真。

编辑:视图sys.dm_pdw_nodes_tran_session_transactions用于azure数据库(我认为群集安装也可能有效),其他版本也使用sys.dm_tran_session_transactions。所以我编辑了答案来使用sys.dm_tran_session_transactions

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37455307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档