你好斯塔克沃夫社区,
让我请求你的帮助,因为我遇到了一个关键的问题。
我们有两个链接服务器,都是Microsoft服务器: CRM和DW服务器。客户关系管理系统中的一些更改会触发一个过程,以便立即对DW服务器进行更新,其工作方式是CRM系统调用DW服务器来更新记录。在我的例子中,来自客户关系管理系统和DW服务器的更新称为同步,这里开始出现问题。
DW服务器尝试读取更改,并在事务开始之前只获取记录。是的,这是因为CRM Server使用:
读取已提交快照
不幸的是,我们无法更改CRM服务器上的隔离级别。简单的解释- CRM来自第三方供应商,他们想限制我们制造这些可能性。
还有其他方法吗,等待事务提交,然后在提交后读取最新数据?
如果缺乏信息,请让我知道,然后我会提供更多的见解。
发布于 2018-08-23 13:03:19
我不明白这里的控制流,但是从第一段开始,您就说CRM中的更新会触发一个proc来更新DW服务器。因此,我不知道DW服务器是如何在CRM服务器之前更新的。您说他们同时被调用,但这将否定关于触发器的评论。您不希望DW进行脏读取,所以在这里读取提交快照是一个不错的选择,但您也可以在事务级别指定您想要的任何隔离级别,并覆盖服务器默认设置。
既然您问到“是否有方法等待事务提交,然后在提交后读取最新数据?”。当然,这件事可以用几种方式处理.
UPDATE
语句之后的代码块中,按照相同的过程将INSERT
添加到DW中。在这里,您可以使用TRY / CATCH
,当然也可以使用中止,这样如果任何事情失败,整个事务都会回滚。记住,嵌套事务不是真实的。https://stackoverflow.com/questions/51982874
复制相似问题