将不确定变为确定~transactionscope何时提升为分布式事务~SQL2005与SQL2008不同
Transactionscope何时被提升为分布式事务,即时要触发msdtc服务,这个问题与数据库版本有关,在前面的文章中,我的MSTDC系列出现了多个版本,有一点没有说清楚,测试的环境不同,所以产生了多个版本,下面我做一下总结:
第二十六回 将不确定变为确定~transactionscope何时提升为分布式事务?
第二十七回 将不确定变为确定~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不同的更多相关文章
- 将不确定变为确定~transactionscope何时提升为分布式事务?(sql2005数据库解决提升到MSDTC的办法)
回到目录 对于transactionscope不了解的同学,可以看我的相关文章 第二十六回 将不确定变为确定~transactionscope何时提升为分布式事务? 第二十七回 将不确定变为确 ...
- Replication--无法将事务提升为分布式事务,因为在事务中有活动的保存点
场景描述在SQL SERVER 2012上创建事务发布,发布库已搭建为可AWAYSON,分发服务器和发布服务器分离,创建发布时提示“无法将事务提升为分布式事务,因为在事务中有活动的保存点” 解决方法E ...
- 事务使用中如何避免误用分布式事务(System.Transactions.TransactionScope)
1:本地事务DbTransaction和分布式事务TransactionScope的区别: 1.1:System.Data.Common.DbTransaction: 本地事务:这个没什么好说了,就是 ...
- 关于分布式事务的一个误解:使用了TransactionScope就一定会开启分布式事务吗?
背景: 事务是数据库管理系统的一个基本概念,事务具有四个基本特点,即ACID:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持久性(Durability ...
- ADO.NET中的TransactionScope何时需要启用MSTDC(分布式事务管理)
我们知道在ADO.NET中可以用TransactionScope来将多个SqlConnection(多个数据库连接)执行的Sql语句放入一个事物中提交或取消,但是使用TransactionScope的 ...
- 如何避免误用分布式事务(System.Transactions.TransactionScope)
以下内容来源与:http://www.cyqdata.com/cyq1162/article-detail-54453 1:本地事务DbTransaction和分布式事务TransactionScop ...
- C#分布式事务解决方案-TransactionScope
引用一下别人的导读:在实际开发工作中,执行一个事件,然后调用另一接口插入数据,如果处理逻辑出现异常,那么之前插入的数据将成为垃圾数据,我们所希望的是能够在整个这个方法定义为一个事务,Transacti ...
- 使用TransactionScope做分布式事务协调
//场景是使用在多个数据库之间的协调,.NET 2.0使用一个新的类型 TransactionScope来进行协调,这与之前的COM+协调是相对来说更加方便的 //需要引用一个新的程序集:System ...
- 分布式事务TransactionScope
分布式事务TransactionScope 以下是分布式事务的所有情况的例子了,包含了事务套事务,事务套存储过程事务,经过测试,TransactionScope对于分布式事务的各种情况支持的很好. 使 ...
随机推荐
- 前端开发面试知识点大纲--摘自jackyWHJ
前端开发面试知识点大纲:HTML&CSS: 对Web标准的理解.浏览器内核差异.兼容性.hack.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端适应 Ja ...
- UIScrollView
1.PPT介绍什么是UIScrollView 2.新建项目“大图片展示” * 尽量用storyboard,减少代码 * 设置contentSize属性 * 取消autolayout * 说明frame ...
- Qt Qwt之坐标轴移动
最近接触到个pro需要做到这方面,于是找了相关材料,也跟好些人讨论,目前就最简单的使用方法,通过按钮触发去控制 X,Y轴的移动,比例自己定义 这个是X轴放大的 QwtInterval tempInte ...
- yii 图片展示
<?= DetailView::widget([ 'model' => $model, 'attributes' => [ 'id', 'name', 'time', 'pic', ...
- tmpfs介绍
tmpfs 前几天发现服务器的内存(ram)和swap使用率非常低,于是就想这么多的资源不用岂不浪费了?google了一下,认识了tmpfs,总的来说tmpfs是一种虚拟内存文件系统正如这个定义它最大 ...
- iOS 的文字滚动条效果的实现
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(50, 100, 300, 50)]; label.text = @"欢 ...
- Java实现四则运算,使用堆栈,检查语法
突然发闲想试一试自己实现算术的四则运算,支持加减乘除和括号.正负号:支持语法检查:思路很常规,利用两个堆栈,一个压操作符,一个压操作数,念头冒出来之后,立马动手:然后本以为很容易的一个实现,却存在各种 ...
- Python成长笔记 - 基础篇 (九)
创建一个socketserver 至少分以下几步: First, you must create a request handler class by subclassing the BaseRequ ...
- JSP中<base href="<%=basePath%>">作用
通常在JSP页面开通有如下代码: <% String path = request.getContextPath(); String basePath = request.getScheme() ...
- mono 开发
引用 segmentfault.com/a/1190000002449629 配置 ASP.NET Linux( CentOS 6.5 ) 运行环境 MONO + Jexus me15000 179 ...