gpt4 book ai didi

c# - 客户端和服务器端涉及数据库和文件系统的分布式事务算法

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:18 26 4
gpt4 key购买 nike

我正在开发一个基于 .Net 的客户端/服务器版本控制系统,它基本上涉及

在客户端: 嵌入式数据库 文件系统

在服务器端: SQL服务器数据库 文件系统

每次从客户端上传新版本到服务器时,都会发生以下步骤:1. 使用新文件元数据(新版本#、时间戳等)更新客户端数据库2.通过HTTP发送文件到服务器,将文件复制到服务器的文件系统中3. 文件传输完成后,用新的元数据更新 Sql server db

整个过程被视为一个事务。问题是,如果发生故障,我们很难根据错误发生的不同阶段回滚事务。

我的问题是,处理这种分布式提交的算法是什么?我听说过三阶段提交,它适合这种情况吗?

谢谢,

最佳答案

这是您可以尝试的事情,但您必须改进示例..这只是您可以做什么的示例

using (SqlConnection conn1 = new SqlConnection())
{
using (SqlConnection conn2 = new SqlConnection())
{
try
{
using (var scope = new System.Transactions.TransactionScope())
{
//when opening the connection, its' implicitly enlisted in the transaction scope
conn1.Open();
SqlCommand command1 = new SqlCommand(cmdText, conn1);
//set parameters
command1.ExecuteNonQuery();

conn2.Open();
SqlCommand command2 = new SqlCommand(cmdText, conn1);
//set parameters
command2.ExecuteNonQuery();

//transaction commit/rolls back if an exception is thrown
scope.Complete();
}
}
catch (System.Transactions.TransactionAbortedException ex)
{
//handle aborted transaction
}
catch (Exception ex)
{
//handle other exceptions
}
}
}

关于c# - 客户端和服务器端涉及数据库和文件系统的分布式事务算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com