azure-sql-database - 灯开关 : Distributed transactions on Azure

标签 azure-sql-database visual-studio-lightswitch distributed-transactions lightswitch-2013 lightswitch-2012

亲爱的,

我有一些场景,我必须在 LightSwitch 的内部数据库上执行更新,并在一次事务中调用保存管道中的一些 SQL 存储过程,这样,如果 LS 保存管道中发生错误,那么我的存储过程调用是回滚。

建议的方法是在 SaveChanges_Executing 事件中设置环境事务,并在 SaveChanges_Executed 和 SaveChanges_ExecuteFailed 事件中对其进行处理。如本文所述http://www.codemag.com/Article/1103071

但这有两个致命的问题:

  1. 当我在 Azure 上发布应用程序时,它不起作用,因为那里不支持分布式事务。
  2. 当我尝试使用 ServerApplicationContext 保存对 ApplicationData 源的更改时,它还会引发错误。错误是这样的:底层提供程序在 EnlistTransaction 上失败

有没有人找到一种更干净的方法来处理 LightSwitch 中的事务,该方法既可以在 Azure 上运行,也可以通过 ServerApplicationContext 运行?

非常感谢

最佳答案

目前,使用 MSDTC 的分布式事务不适用于 SQL Azure。不过,它们可以在 Azure 中运行的 VM 中针对 SQL Server 正常工作。一般来说,MSDTC 与在域 Controller 上运行相关,这在公共(public)云环境中没有意义。可能需要替代 DTC,但这尚未公开宣布。

我不认为 Lightswitch 是这里的主要问题(尽管它可能还有一些超出我所描述的其他问题)。

我希望这至少能解释为什么它今天不起作用 - 我希望我有一个更好的答案给你,但现在这是不可能的。正在使用的“解决方法”是构建能够适应每一方(或不是)发生的提交并从失败的情况中恢复的应用程序。

关于azure-sql-database - 灯开关 : Distributed transactions on Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42220977/

相关文章:

sql-server - LightSwitch相关数据请求优化

javascript - Lightswitch HTML - 不为空的表过滤器

java - 在 spring boot 应用程序中使用 RabbitMQ 进行分布式事务

Java:多线程内的 XA 事务传播

entity-framework - 如何在 Azure 门户中覆盖 Azure Sql 连接

node.js - Azure Node 增加连接超时

azure sql连接字符串-用户身份验证不是管理员

azure - 如何从 SSMS 检查数据同步组?

c# - 在多个 lightswitch 屏幕中重复使用通用命令

java - 什么是交易边界?