请教TransactionScope实现事务,并发异常

问题描述

线上并发量大后,就出现System.Transactions.TransactionManagerCommunicationException:与基础事务管理器的通信失败。--->System.Runtime.InteropServices.COMException:由于通信问题,MSDTC事务管理器无法从源事务管理器提取事务。可能原因如下:存在防火墙并且没有MSDTC进程的例外、两台计算机根据其NetBIOS名称无法找到彼此,或未对于两个事务管理器之一启用网络事务支持。(异常来自HRESULT:0x8004D02B)然后,sqlserver就阻塞锁表导致,访问受阻,怎么解决,谢谢。并发不大,就正常的,唉~

解决方案

解决方案二:
貌似并发引起死锁,造成TransactionScope出现异常异常不是TransactionScope引起的
解决方案三:
事务隔离级别是?
解决方案四:
贴代码调试画面,不要紧紧贴异常信息。你是搞技术研发的,不是只能用任何不懂技术都会的那种方式来报告bug的。如果从技术上说,如果直接使用你的.net驱动的Transaction类库可以,就不要绕远去使用什么TransactionScope。当然还有你的具体的事务中的是否存在坑爹的操作(例如不能在2秒钟内完成而需要10秒钟才能完成的操作),等等。对于一个程序员首先要做到的不是这些技术,而是遇到问题时能够动手调试并且把调试画面贴出来。否则标题党总是会堆砌一堆无关的技术然后引起一堆问题出来。
解决方案五:
IsolationLevel=IsolationLevel.RepeatableRead
解决方案六:
仅通过这些描述无法判断问题,除非有人也曾经碰到过此问题

时间: 2025-01-21 10:44:29

请教TransactionScope实现事务,并发异常的相关文章

游标、事务并发和锁三者之间的那点事

对数据库学习的不断深入,对游标的认识也在逐渐加深,游标与事务.锁有着密不可分的关系. 无论是事务.锁还是游标相对于数据库来说最主要目的是保证数据的完整性.对事务并发.锁定的深入学习才能更加完善对游标的理解.少说废话,下面进入本篇文章的正题. 首先,我们讲解游标与事务并发的那点事 事务是为完成特定任务,将一条或多条的SQL语句组合在一起.有效的使用事务不但可以提高数据的安全性,而且还可以增强数据的处理效率.如果没有锁定且多个用户同时访一个数据库,多个事务使用相同的数据时就会出现事务并发的问题. 我

C#解决SQlite并发异常问题的方法(使用读写锁)_C#教程

本文实例讲述了C#解决SQlite并发异常问题的方法.分享给大家供大家参考,具体如下: 使用C#访问sqlite时,常会遇到多线程并发导致SQLITE数据库损坏的问题. SQLite是文件级别的数据库,其锁也是文件级别的:多个线程可以同时读,但是同时只能有一个线程写.Android提供了SqliteOpenHelper类,加入Java的锁机制以便调用.但在C#中未提供类似功能. 作者利用读写锁(ReaderWriterLock),达到了多线程安全访问的目标. using System; usin

mysql先查询后插入或者更新的事务并发问题?

问题描述 mysql先查询后插入或者更新的事务并发问题? 在对数据进行插入更新的时候遇到一个问题,做了一个事务: @Transaction public void insertOrUpdate(entity){ Object o = search(entity); if(o!=null) update(entity); else insert(entity); } 上面的伪代码在非并发态,是正常的.但是在并发的时候就会出现插入多条同样的数据,如果调高隔离级别进行控制,就会报: Deadlock

关于SQL Server 事务、异常和游标详解(1/3)

本教程来说一下关于SQL Server 事务.异常和游标的事情下面来看教程,希望对你有帮助. 1. 事务的特点         事务有若干条T-SQL指令组成,并且所有的指令昨晚一个整体提交给数据库教程系统,执行时,这组指令要么全部执行完成,要么全部取消.因此,事务是一个不可分割的逻辑单元.           事务有4个属性:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)以及持久性(Durability),也称作事务的ACID属性.        

如何防止SQL Server数据库的事务日志异常增长

server|数据|数据库 当事务日志扩展到无法接受的限度时您必须执行的步骤.事务日志的扩展会导致 Microsoft SQL Server 数据库无法使用. 在 SQL Server 2000 中,每个数据库都至少包含一个数据文件和一个事务日志文件.SQL Server 2000 在该数据文件中以物理方式存储数据.事务日志文件存储您对 SQL Server 数据库执行的所有修改的详细信息,以及执行每个修改的事务的详细信息.由于事务完整性被视为 SQL Server 的一个基本而固有的特点,因此

SqlCommand使用有rollback transaction的事务报异常

问题描述 数据库SqlServer2008,创建一个存储过程createproceduresp_test1(@idint)asbegintransactionif@id=1beginrollbacktransactionendelsebegincommittransactionend //调试代码publicboolTestProc(intid){try{//SqlCommandcmd=newSqlCommand("sp_test1");//cmd.CommandType=Comman

spring学习笔记(20)数据库事务并发与锁详解

多事务运行并发问题 在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分类: 1. 第一类丢失更新:撤销一个事务,其他事务已提交的更新数据覆盖 2. 第二类丢失更新:一个事务覆盖另一个事务已提交的更新数据 3. 脏读:一个事务读到另一个事务未提交的数据 4. 虚读:一个事物读到另一个已提交的新插入数据 5. 不可重复读:事务读到另一个事务已提交的更新数据 下面对这几类并

请教一个关于事务的问题,,,在线等!!!!高手来

问题描述 连续登记事务是怎么用的????????????大家有没有详细的事务使用代码??????文档之类的!!!!!!!!!!!!!!!!! 解决方案 解决方案二:<连续登记事务>这个是神马?解决方案三:嵌套事务处理:1:Trans嵌套,将内部的trans合并到外部并形成一个Trans.begintrant1----Inthefirsttrans.Insertintodemo2(name,age)values('lis',1)---SecondTransbegintransactiont2in

请教一个关于事务提交,提示session is close 的问题

问题描述 问题如题,以下是错误信息,lazy都试过了,还是同样测错误,当事务提交的时候就会报错sessionisclose困扰很久,求大神帮忙myeclipse+webwork+hibernate+oracle10g+webservice集群org.hibernate.SessionException:Sessionisclosedatorg.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:126)atorg.hibernate.tr