将不确定变为确定~transactionscope何时提升为分布式事务~SQL2005与SQL2008不同

简介:

Transactionscope何时被提升为分布式事务,即时要触发msdtc服务,这个问题与数据库版本有关,在前面的文章中,我的MSTDC系列出现了多个版本,有一点没有说清楚,测试的环境不同,所以产生了多个版本,下面我做一下总结:

第二十六回   将不确定变为确定~transactionscope何时提升为分布式事务?

第二十七回   将不确定变为确定~transactionscope何时提升为分布式事务~续

第二十八回   将不确定变为确定~transactionscope何时提升为分布式事务~再续(避免引起不必要的MSDTC)

第二十九回   将不确定变为确定~transactionscope何时提升为分布式事务~大结局

一 数据库与WWW服务器不在一台电脑,数据库为SQL2005,一个savechanges,才不会提升为MSDTC,这在之前已经做了证明,将不确定变为确定~transactionscope何时提升为分布式事务~大结局

二 数据库与WWW服务器不在一台电脑,数据库为SQL2008,多个数据上下文,多个savechanges,它也不会提升为MSDTC,这个比较强,原来MSDTC还与数据库版本有关,呵呵 ,将不确定变为确定~transactionscope何时提升为分布式事务~续

下面是对SQL2008上做的一个测试

  using (TransactionScope trans = new TransactionScope())
            {
                try
                {

                    dbs.Entry<Classroom_Info>(entity);
                    dbs.Set<Classroom_Info>().Add(entity);
                    dbs.SaveChanges();//dbs上下文的SaveChanges

                    //绑定学生
                    entity.User_Classroom_R.ToList().ForEach(i =>
                    {
                        i.ClassroomInfoID = entity.ClassroomInfoID;
                    });

                    //绑定学生
                    entity.User_Classroom_R.ToList().ForEach(i =>
                    {
                        db.Entry<User_Classroom_R>(i);
                        db.Set<User_Classroom_R>().Add(i);
                    });
                    db.SaveChanges();//db上下文的savechanges

                    trans.Complete();//提交事务
                }
                catch (Exception)
                {
                    trans.Dispose();//出现异常,事务手动释放
                    throw;
                }
            }

总结:

对于SQL2008数据库来说,只有不同的数据库时,才会认为它是一个分布式事务,即SQL链接串不同时,才会被提升为MSDTC。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:将不确定变为确定~transactionscope何时提升为分布式事务~SQL2005与SQL2008不同,如需转载请自行联系原博主。

目录
相关文章
|
9月前
|
SQL 存储 NoSQL
sql在分布式的应用
sql在分布式的应用
51 0
|
9月前
|
SQL 分布式计算 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
111 0
|
10月前
|
SQL 分布式计算 数据库连接
大数据Spark分布式SQL引擎
大数据Spark分布式SQL引擎
242 0
|
9月前
|
SQL 存储 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
101 0
|
19天前
|
关系型数据库 MySQL 数据库
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作
|
2月前
|
SQL 分布式计算 HIVE
基于 Kyuubi 实现分布式 Flink SQL 网关
本文整理自网易互娱资深开发工程师、Apache Kyuubi Committer 林小铂的《基于 Kyuubi 实现分布式 Flink SQL 网关》分享。
104627 64
基于 Kyuubi 实现分布式 Flink SQL 网关
|
2月前
|
SQL 算法
基于若依的ruoyi-nbcio流程管理系统修改代码生成的sql菜单id修改成递增id(谨慎修改,大并发分布式有弊端)
基于若依的ruoyi-nbcio流程管理系统修改代码生成的sql菜单id修改成递增id(谨慎修改,大并发分布式有弊端)
50 1
|
2月前
|
SQL 分布式计算 Java
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
59 0
|
2月前
|
SQL 关系型数据库 MySQL
Presto【基础 01】简介+架构+数据源+数据模型+特点(一篇即可入门支持到PB字节的分布式SQL查询引擎Presto)
Presto【基础 01】简介+架构+数据源+数据模型+特点(一篇即可入门支持到PB字节的分布式SQL查询引擎Presto)
88 0
|
8月前
|
SQL Kubernetes 关系型数据库
​Kubernetes的演变:从etcd到分布式SQL的过渡
​Kubernetes的演变:从etcd到分布式SQL的过渡
​Kubernetes的演变:从etcd到分布式SQL的过渡