如何在 CosmosDB 中恢复或回滚更新?

How to do revert or rollback of an update in CosmosDB?

我正在 Azure CosmosDB SQL API 中插入 JSON 文档作为事务的一部分。我正在使用 SDK Microsoft.Azure.DocumentDB.Core.

我还有另一个 SQL 服务器 更新发生在相同的 事务范围 (不是 .NET 事务范围class)。如果 SQL 服务器 更新失败,我想 revert/rollback 对 CosmosDB 所做的更改。我应该使用 SDK 中的什么命令或选项来执行此操作?

我想你在这里问的是你的 Cosmos DB 更新是否可以参与自动管理的分布式事务,我相信答案是否定的。 Cosmos 中的交易支持有些有限。

  • Cosmos DB 引擎支持的任何事务都限定为单个容器中的单个分区,这意味着,您不能更新不同容器中的文档,甚至无法将同一容器中的不同分区作为单个事务的一部分。
  • 直到最近,获得事务支持的唯一方法是使用服务器端存储过程。使用 version 3.4 of the .Net SDK,您现在可以从您的 .Net 代码执行事务,但单个分区限制仍然适用。
  • 没有内置支持参与与其他数据库或服务的分布式事务。

为了在您的 Cosmos DB 和 SQL 服务器数据库中执行操作作为单个原子事务的一部分,您需要编写一些代码来自行管理。 Check here 分布式事务入门。