使用分布式事务时 就锁死了,而且是只锁编辑的行 使用.netSQL事务一定要执行了一个CUD的SQL才会锁死,而且也是锁行,但是也锁读的行 .netSQL事务要在这里才锁死 结论,对于产品要求细粒度的操作一定要使用分布式事务或存储过程,其他的可以使用.netSQL事务 PS:分布式事务(MSDTC)在网上有很多差评,希望大家可以在这里讨论一下,如有不对,请批评指正,谢谢…
不久之前团队有个新人问我一个很重要的web服务接口如何保证事务的问题.因为涉及到跨库事务,当时我只是回答目前我们的SOA框架都不支持跨库事务.然后就问到了数据库跨库事务是如何实现的,我只能凭印象含糊回答多数是基于数据库日志(后来知道就是所谓的预写日志Write-Ahead Logging),具体数据库内部如何控制数据一致性则真的说不清楚.后来一起查了一下事务的资料,原来DB的事务控制除了基于预写日志还要实现两阶段提交协议(2PC),参考MSDN摘抄两段加深印象. 一.2PC的两个阶段 1.准备阶…
spring + ibatis 多数据源事务(分布式事务)管理配置方法(转) .我先要给大家讲一个概念:spring 的多数据源事务,这是民间的说法.官方的说法是:spring 的分布式事务.明白了这个概念,问题就好解决了. .分布式事务的应用场景:工程中使用两个及以上数据库中,就要考虑使用分布式事务管理,否则事务不能回滚. .现有两种开源的第三方jar支持spring的分布式事务管理,它们分别是:jotm和Atomikos.通过google可以找到下载的链接,其中atomikos的下载需要先填…
1.存储过程,事务 CREATE PROCEDURE Proc_ceshi @id int, ), @returnval int output AS BEGIN SET NOCOUNT ON; Set XACT_ABORT ON; begin tran #ceshi begin try insert into dbo.table_ceshi (id,name) values (@id,@name); ) goto error; ,'fan'); ) goto error; end try beg…
在EF 中怎么使用事务? 这个问题纠结了我好久,直到有人跟我一起讨论,我和同事一起讨论查资料. 查的好多资料都是使用 TransactionScope,用 TransactionScope 可处理分布式事务. using (TransactionScope scope = new TransactionScope()) { //具体代码内容 scope.Complete(); } 这种方式可处理分布式事务.而我在实际使用中是没法使用的. 所以我就一直找其他的方式,无意中看到某个网站的的datab…
1.SqlServer中like '%_%'来匹配下划线: --在sql server的like中下划线类似于通配符%,所以无法使用like '%_%'来匹配下划线 select * from class where name like '%\_%' escape '\' 2.下划线的位置可以任意匹配字符 3.集合[ ],^取反  4.去字符左右空格,获取字符第一次出现位置(patindex) --去除右边空格,去除左边空格 LTRIM() SELECT RTRIM(name) + ' (' +…
CREATE procedure [dbo].[sp_TableSave] @TypeID tinyint, -- 0 新增,1 修改,2 删除 @ID int, ), ), ), @UID int, ), )' output as set nocount on begin try begin transaction -- 开始事务 declare @currDate SMALLDATETIME SET @currDate=GETDATE() ') --修改 begin where Activi…
CREATE PROCEDURE procedureName (@var1 as varchar(50),@var2 as varchar(50)) --建立未发临时表 AS begin tran --doSth DUMP TRANSACTION GJJ WITH NO_LOG ---------1.清空日志 BACKUP LOG GJJ WITH NO_LOG ------------2.截断事务日志 DBCC SHRINKDATABASE(GJJ) ----------------- 3.收…
springboot +mybatis 单数据源,事务 事务:简单理解指的是一组操作,里面包含许多个单一的逻辑,只要有一个逻辑没有执行成功 ,那么都算失败.所有的数据都回归到最初的状态(回滚) 代码实例: @RequestMapping("/testTranSctional") @ResponseBody public void testTranSctional(String name, Integer age) { userMapperTest01.insert(name, age)…