国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ADO.NET 系列 quiz 2 關于分布式事務

2024-07-10 13:03:15
字體:
來源:轉載
供稿:網友
問題:
關于分布式事務的例子:

數據庫a 和數據庫b 上各有一個bank 表 ( 實際情況下a 和 b 分別在不同的機器上,不同類型的數據庫(支持dtc))
表結構如下
bankaccount, amount

a 數據庫中的記錄:
a 1000

b 數據庫中的數據
b 1000

為了測試方便,沒有用 com+,而是直接在 web service 中測試。
代碼如下:

<webmethod(transactionoption:=enterpriseservices.transactionoption.requiresnew)> _
public function dtstest() as string
try
contextutil.enablecommit()

drawmoneyfroma(100)
depostmoneytob(100)
contextutil.setcomplete()
return "ok!"
catch ex as exception
contextutil.setabort()
return "failed" + ex.message
end try


end function


public sub drawmoneyfroma(byval amount as long)
'從 a 中提取一定的錢
dim cnn as new sqlconnection("server=server1;database=a;uid=sa;[email protected];enlist=false")
cnn.open()
dim cmd as new sqlcommand("update bank set amount=amount - " & amount & " where bankaccount='a'", cnn)
cmd.executenonquery()

end sub

public sub depostmoneytob(byval amount as long)
'往 b 帳戶加入一定的錢
dim cnn as new sqlconnection("server=server2;database=b;[email protected];uid=sa;enlist=false")
cnn.open()
dim cmd as new sqlcommand("update bank set amount=amount + " & amount & " where bankaccount='b'", cnn)
throw new exception("ff")
cmd.executenonquery()
end sub


然后調用web service, 發現a 的余額是 900, 而 b 的帳戶仍舊是 1000 ,分布式事務失敗。

可能的原因是什么?

同樣上面的代碼只要稍作修改就可以了。

,歡迎訪問網頁設計愛好者web開發。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗定市| 湘阴县| 天峨县| 石门县| 上栗县| 湘阴县| 沈丘县| 延安市| 抚州市| 体育| 通化市| 横峰县| 琼海市| 宕昌县| 涪陵区| 如东县| 辽中县| 信宜市| 佳木斯市| 台南市| 金川县| 铜陵市| 宁蒗| 视频| 鲁山县| 湖南省| 同心县| 寿宁县| 银川市| 新龙县| 大安市| 台北县| 类乌齐县| 莱芜市| 金坛市| 永登县| 正蓝旗| 观塘区| 柳林县| 弋阳县| 肥西县|