2007年5月18日 星期五

TransactionScopeOption.Suppress

在使用 System.Transactions.TransactionScope 時,一直發生「The partner transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D025) 」的錯誤。

實在看不懂,還在MSDTC更改設定。設定老半天,完全不對。

後來,發現只要在scope 中讀取sql2005 的 database 之 table schema,就會發生上述的錯誤。 原來,讀取table schema 是無法交易的。因此,必須將讀取table schema放在TransactionScopeOption.Suppress 中。

程式大意如下:

using (TrsnsactionScope s1 = new TrsnsactionScope())
{
UpdateDBOperation1();
Using (TrsnsactionScope s1 = new TrsnsactionScope(TransactionScopeOption.Suppress))
{
ReadTableScheam(); //不要加入交易
}
UpdateDBOperation2();
}

沒有留言:

Share with Facebook