【问题标题】:Transaction updating database and crm事务更新数据库和CRM
【发布时间】:2014-10-21 08:58:33
【问题描述】:

我有一个场景,我需要同时更新 SQL Server 表和 Microsoft CRM 记录作为一个事务,如果一个失败,另一个也必须失败。实现这一目标的最佳方法是什么?我应该使用什么技术?

【问题讨论】:

    标签: distributed-transactions


    【解决方案1】:

    如果您使用的是 CRM 2011 或 CRM 2013,则事件前插件始终在数据库事务中执行,并且在出现故障时将回滚。您可以选择在数据库事务内部或外部执行事件后操作。

    如果您提到的 CRM 表是触发事务的表,那么您应该将更新该表的逻辑放在更新前插件中,并将 SQL 表更新逻辑放在事务中的更新后插件中。

    如果正在更新的 CRM 表不是触发事务的表,那么您应该将这两个逻辑都放在事务内的更新后插件中。

    在这两种情况下,如果出现故障,一切都会回滚。

    【讨论】:

    • 其实CRM是一个系统,SQL Server是另一个数据库(这不是CRM数据库)。
    • 我认为这不会改变答案。假设您的 post update 插件在事务中运行并且首先执行 CRM 表更新,然后 CRM 表更新期间的失败意味着您的 SQL 更新逻辑将永远不会执行。如果 CRM 表更新成功但 SQL 更新失败,则 CRM 更新将回滚,因为它是在事务中执行的。
    猜你喜欢
    • 2016-08-31
    • 2013-06-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2017-12-30
    相关资源
    最近更新 更多