我正在使用圍繞Web服務和數據庫的system.Transactions
。當我無法連接到遠程數據庫時,事務不會回滾。所以數據將被插入到Web服務的數據庫中,同時應該被回滾。我在寫自己的Web服務代碼。分佈式事務協調器服務已運行,並且我在組件服務中設置了其他參數。爲什麼事務不能在Web服務和數據庫之間回滾?
最好說Web服務和客戶端都在同一臺機器上。
using System.Transactions;
try
{
using (TransactionScope tscope = new TransactionScope())
{
//----- Web service
IdentificationSystem.Service Identify = new IdentificationSystem.Service();
Identify.InsertWorkshopInfo(BosWorkshop.WpSvUserName, BosWorkshop.WpSvPassword,BosWorkshop.WkIcode
//-------------
//------------------ connect to a remote DB
//--------- My Sql Query
string sq= "SET XACT_ABORT ON;update tbl_kargah " +
"set [email protected] "+
"where [email protected]_kargah "+
"insert into dbo.tbl_WorkshopCodes (co_kargah,Code_ostan,Wpcode) "+
"values(@Co_kargah,@Code_ostan,@WpCode) "+
"insert into LnkWorkerSystem.Bazresi_kar.dbo.tbl_Workshopcodes(Co_Kargah,Code_Ostan,WpCode) "+
"values(@Co_kargah,@Code_ostan,@WpCode) ";
//--------
SqlCon = new SqlConnection(@BoBaz.BazConnectionString);
SqlCon.Open();
SqlCom = new SqlCommand(sq, SqlCon);
SqlCom.Parameters.Add("@co_kargah", SqlDbType.BigInt).Value = BoBaz.BazCodeKargah;
SqlCom.Parameters.Add("@Code_ostan", SqlDbType.NVarChar).Value = BoBaz.BazCodeOstan;
SqlCom.Parameters.Add("@WpCode", SqlDbType.NChar).Value = BoBaz.WpRealCode;
SqlCom.ExecuteNonQuery();
SqlCon.Close();
tscope.Complete();
}
}
catch(Exception ex)
{
string s = ex.Message;
}
參考這個問題,請:Transaction
代碼scaries我有點.. –
很抱歉,但我不得不將它張貼 –
你有一個未完成的return語句在SQL之前... – cjk