读懂ConnectString 中 enlist 设置的含义
生活随笔
收集整理的這篇文章主要介紹了
读懂ConnectString 中 enlist 设置的含义
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
因?yàn)樯洗斡龅皆趙ebservice中處理事務(wù)的問(wèn)題,偶然在調(diào)試程序的時(shí)候?qū)racleConnection的連接字符串enlist設(shè)置的一個(gè)有趣的發(fā)現(xiàn)。
????? 以前看過(guò)一篇文章,不記得是什么文章了,文章中說(shuō)對(duì)enlist最好設(shè)置為false,當(dāng)時(shí)也沒(méi)有怎么去深究為什么要設(shè)置為false,在我的程序中enlist=false就直接寫(xiě)進(jìn)去了。現(xiàn)在才發(fā)現(xiàn)原來(lái)對(duì)enlist的設(shè)置與事務(wù)的處理是有這微妙的關(guān)系的。
????? 事務(wù)管理器一般采用兩種方式來(lái)管理,一種稱(chēng)之為L(zhǎng)ightweight Transaction Management,簡(jiǎn)稱(chēng)LTM,一種稱(chēng)之為oleX TM。在Simple phase提交中一般使用的是LTM,而在分布式事務(wù)處理中一般用的是2PC,所以使用的方式是oleX TM的方式。
????? 如果enlist=false,那么意味著后續(xù)的事務(wù)不會(huì)在當(dāng)前事務(wù)中登記,所以當(dāng)前事務(wù)不會(huì)成為事務(wù)的根。如果在程序中使用了分布式事務(wù)處理,可能也不會(huì)正確的執(zhí)行(關(guān)于這一點(diǎn)我沒(méi)有做測(cè)試)。此時(shí)程序告訴TM采用LTM的方式來(lái)管理。
????? 如果enlist=true,那么進(jìn)程告訴TM需要使用oleX TM的方式來(lái)管理,此時(shí)會(huì)自動(dòng)啟用分布式事務(wù)管理,所以如果在連接字符串中將enlist=true,如果使用的是oracle數(shù)據(jù)庫(kù),那么后臺(tái)會(huì)調(diào)用oramts.dll,如果在開(kāi)發(fā)環(huán)境下沒(méi)有安裝MTS for Oracle服務(wù),那么就會(huì)提示找不到oramts.dll。你可以從oracle的站點(diǎn)上下載這個(gè)服務(wù)的安裝包,不知道為什么oracle不提供單獨(dú)的安裝包,而是與odac捆綁在一起下載。
????? 以前看過(guò)一篇文章,不記得是什么文章了,文章中說(shuō)對(duì)enlist最好設(shè)置為false,當(dāng)時(shí)也沒(méi)有怎么去深究為什么要設(shè)置為false,在我的程序中enlist=false就直接寫(xiě)進(jìn)去了。現(xiàn)在才發(fā)現(xiàn)原來(lái)對(duì)enlist的設(shè)置與事務(wù)的處理是有這微妙的關(guān)系的。
????? 事務(wù)管理器一般采用兩種方式來(lái)管理,一種稱(chēng)之為L(zhǎng)ightweight Transaction Management,簡(jiǎn)稱(chēng)LTM,一種稱(chēng)之為oleX TM。在Simple phase提交中一般使用的是LTM,而在分布式事務(wù)處理中一般用的是2PC,所以使用的方式是oleX TM的方式。
????? 如果enlist=false,那么意味著后續(xù)的事務(wù)不會(huì)在當(dāng)前事務(wù)中登記,所以當(dāng)前事務(wù)不會(huì)成為事務(wù)的根。如果在程序中使用了分布式事務(wù)處理,可能也不會(huì)正確的執(zhí)行(關(guān)于這一點(diǎn)我沒(méi)有做測(cè)試)。此時(shí)程序告訴TM采用LTM的方式來(lái)管理。
????? 如果enlist=true,那么進(jìn)程告訴TM需要使用oleX TM的方式來(lái)管理,此時(shí)會(huì)自動(dòng)啟用分布式事務(wù)管理,所以如果在連接字符串中將enlist=true,如果使用的是oracle數(shù)據(jù)庫(kù),那么后臺(tái)會(huì)調(diào)用oramts.dll,如果在開(kāi)發(fā)環(huán)境下沒(méi)有安裝MTS for Oracle服務(wù),那么就會(huì)提示找不到oramts.dll。你可以從oracle的站點(diǎn)上下載這個(gè)服務(wù)的安裝包,不知道為什么oracle不提供單獨(dú)的安裝包,而是與odac捆綁在一起下載。
?????? 如果你沒(méi)有對(duì)enlist配置會(huì)出現(xiàn)什么樣的情況呢?這樣看你的程序是使用分布式事務(wù)還是一般性的事務(wù)處理。TM會(huì)根據(jù)程序的請(qǐng)求自動(dòng)做出反應(yīng)。
?????? 簡(jiǎn)單的講enlist=true則支持分布式事務(wù)處理(支持Transactionscope 事物處理),反之依然.
?
結(jié)論:enlist對(duì)事務(wù)的登記有一定的控制作用。如果我的描述有錯(cuò),請(qǐng)幫助指正。轉(zhuǎn)載于:https://www.cnblogs.com/jhxk/articles/1781768.html
總結(jié)
以上是生活随笔為你收集整理的读懂ConnectString 中 enlist 设置的含义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 求了不起的盖茨比电影资源,谢谢
- 下一篇: SharePoint 2010中的客户端