快捷搜索:

ConnectString中enlist设置的含义

由于上次碰到在webservice中处置惩罚事务的问题,偶尔在调试法度榜样的时刻对OracleConnection的连接字符串enlist设置的一个有趣的发明。

曩昔看过一篇文章,不记得是什么文章了,文章中说对enlist最好设置为false,当时也没有怎么去追究为什么要设置为false,在我的法度榜样中enlist=false就直接写进去了。现在才发明原本对enlist的设置与事务的处置惩罚是有这奥妙的关系的。

事务治理器一样平常采纳两种要领来治理,一种称之为Lightweight Transaction Management,简称LTM,一种称之为oleX TM.在Simple phase提交中一样平常应用的是LTM,而在散播式事务处置惩罚中一样平常用的是2PC,以是应用的要领是oleX TM的要领。

假如enlist=false,那么意味着后续的事务不会在当前事务中挂号,以是当前事务不会成为事务的根。假如在法度榜样中应用了散播式事务处置惩罚,可能也不会精确的履行(关于这一点我没有做测试)。此时法度榜样奉告TM采纳LTM的要领来治理。

假如enlist=true,那么进程奉告TM必要应用oleX TM的要领来治理,此时会自动启用散播式事务治理,以是假如在连接字符串中将enlist=true,假如应用的是oracle数据库,那么后台会调用oramts.dll,假如在开拓情况下没有安装MTS for Oracle办事,那么就会提示找不到oramts.dll.你可以从oracle的站点高低载这个办事的安装包,不知道为什么oracle不供给零丁的安装包,而是与odac绑缚在一路下载。

假如你没有对enlist设置设置设备摆设摆设会呈现什么样的环境呢?这样看你的法度榜样是应用散播式事务照样一样平常性的事务处置惩罚。TM会根据法度榜样的哀求自动做出反映。

结论:enlist对事务的挂号有必然的节制感化。假如我的描述有错,请赞助斧正。

链接地址: http://yanrongpi.cnblogs.com/archive/2006/07/13/450189.html

您可能还会对下面的文章感兴趣: