System.Transactions 事务超时属性

摘要:
以下配置示例代码将其设置为30秒:2.maximumtransactiontimeout系统事务也有一个属性:maximumttransactiontimeout。此属性主要由系统管理员用于限制事务超时。其默认值为10分钟,不能在代码中重写。如果配置文件或代码中设置的超时值超过了该值,则以该值为准。

最近遇到一个处理较多数据的大事务,当进行至10分钟左右时,爆出事务超时异常,如果Machine.config中不设置最大超时时间,则默认超时时间为10分钟

MachineSettingsSection.MaxTimeout Property

[TimeSpanValidatorAttribute(MinValueString = "00:00:00", MaxValueString = "10675199.02:48:05.4775807")]
[ConfigurationPropertyAttribute("maxTimeout", DefaultValue = "00:10:00")]
public TimeSpan MaxTimeout { get; set; }
http://msdn.microsoft.com/en-us/library/system.transactions.configuration.machinesettingssection.maxtimeout.aspx

System.Transactions 有2个超时属性(timeout 与 maxTimeout),可以通过配置文件来进行设置。

1. timeout

System.Transactions 默认的timeout值为1分钟,可以通过app.config/web.config/machine.config来进行设置(对于应用中具体的事务还可以通过调用具体对象TransactionScopeCommittableTransaction的构造函数进行设置)。以下配置样例代码将其设置为30秒:

<configuration>
 <system.transactions>
  <defaultSettings timeout="00:00:30" />
 </system.transactions>
</configuration>
2. maximum transaction timeout

System.Transactions此外还有一个属性: maximum transaction timeout,该属性主要是系统管理员用于限制事务超时,其默认值为10分钟,并且不可在代码中覆盖设置。如果在配置文件或者代码中所设置的超时值均已超出该值,则以该值为准。maximum transaction timeout只能在machine.config文件中进行配置,以下配置样例代码将其设置为30分钟:

<configuration>
 <system.transactions>
   <machineSettings maxTimeout="00:30:00" />
 </system.transactions>
</configuration>

综上所述,即使在应用的配置文件或代码中将timeout设置为0,试图将事务超时时间设置为无限长也是无效的,整个事务的实际超时时间还是为machineSetting的maxTimeout值所限制。

Machine.config文件在:

C:WindowsMicrosoft.NETFrameworkv4.0config

C:WindowsMicrosoft.NETFramework64v4.0config

免责声明:文章转载自《System.Transactions 事务超时属性》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js中DOMContentLoaded和load的区别Windows Live Writer for cnblogs下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySql 事务实现机制 几种日志undo log、 binlog、redo log

你知道MySQL的原子性是怎么保证的吗? 谁都知道在事务里边原子性的意思:”一个事务包含多个操作,这些操作要么全部执行,要么全都不执行“ 事务保证需要用到一下几个常见 log undo log binlog redo log 一、什么是binlog   binlog其实在日常的开发中是听得很多的,因为很多时候数据的更新就依赖着binlog。   举个很...

Python接口测试入门

接口测试基础篇用几个简单的案例,带你轻松了解接口测试 首先了解一下接口测试的重要性: 接口测试有什么要求呢? 首先需要清晰的接口文档,标准如下: 接口名称 接口类型 输入参数 每个参数名; 每个参数类型; 每个参数业务含义; 每个是否可空; 每个字段长度(可选,一般需要提供,有严格要求的字段需特别注明); 输出参数 状态码; 提示信息; 每个参...

MySQL事务隔离级别

 SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(读取未提交内容)       在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提...

JedisPool无法获得资源问题

线上碰到一个问题:redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool at redis.clients.util.Pool.getResource(Pool.java:22) 线上会相隔不定时的天数后出现一次Jedis...

NPM 配置文件修改

NPM 配置文件修改 几乎每一门语言都有配套的包管理器,比如 Ruby 有RubyGems,Go 有 go modules,npm 作为 node 的包管理器,你有想过全局安装的 node 包都放在硬盘里面的哪个地方?它有没有配置文件?node 包的缓存位置在哪里?node 的包管理工具是 npm,npm 的 配置文件是.npmrc 文件,您可以通过npm...

30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化。 本系列主要是针对T-SQL的总结。 【T-SQL基础】01.单表查询-几道sql查询题 【T-SQL基础】02.联接查询 【T-SQL基础】03.子查询 【T-SQL基础】04.表表达式-上篇 【T-SQL基础】04.表表达式-下篇 【T-SQL基础】05.集合运...