我在應用程序中使用不同的SQL過程。 首先在C#代碼中插入一些行然後再進行一些處理然後第二個程序 再做一些更新然後再進行一些代碼處理然後第三個程序刪除一些記錄然後插入新的記錄。當所有操作都在服務器1上完成時,則從該服務器獲取數據並將其發送到服務器2,並刪除記錄並插入新記錄。 如果在任何服務器的任何階段出現錯誤,我想要回滾所有記錄。 我無法使用開始轉換,因爲處理需要時間並且不能阻止表,因爲其他用戶也同時使用相同的表。所以請告訴我如何在不阻止其他用戶的表的情況下實現它。如何在出現任何錯誤時在不同數據庫服務器上回滾多個查詢
在此先感謝。
已編輯(添加代碼示例): 我試過了事務範圍,但在打開連接時出現異常。我配置了MS DTC,但可能配置不正確。
「 網絡訪問分佈式事務管理器(MSDTC)已被禁用。請啓用DTC在使用MSDTC組件服務管理工具安全配置網絡訪問。」
using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
{
try
{
dl.SetBookReadyToLive(13570, false);
//SetBookReadyToLive
dl.AddTestSubmiitedTitleID(23402);
dl.AddBookAuthorAtLIve(13570, 1);
ts.Complete();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
公共無效SetBookReadyToLive(長的BookID,布爾狀態) { 嘗試 { 如果(dbConMeta.State = ConnectionState.Open!) dbConMeta.Open();
SqlCommand cmd = new SqlCommand("spSetBookReadyToLive", dbConMeta);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Clear();
cmd.Parameters.Add("@BookID", BookID);
cmd.Parameters.Add("@status", status);
cmd.ExecuteNonQuery();
if (dbConMeta.State == ConnectionState.Open)
dbConMeta.Close();
}
catch
{
if (dbConMeta.State == ConnectionState.Open)
dbConMeta.Close();
}
}
我得到的異常上打開方法的連接>
我使用SQL Server 2000中,我已經設置好安裝SQL Server MS DTC的機器上的配置,並在我的電腦我從哪裏運行代碼。但同樣的例外。
請幫助我配置它
感謝大衛的幫助。在上面發佈的原始問題中發佈了示例代碼。我使用了交易範圍。但在權限中出現錯誤。我在客戶機和服務器上配置了MS DTC,但仍然出現錯誤。請再次參閱上述文章。請幫助我。再次感謝> –
拜託你幾乎沒有!只是谷歌有點爲您的錯誤信息,你會發現一步一步的指導如何設置ms dtc啓動和運行的頁面。網絡錯誤是最常見的,只需觸摸安全設置中的最後一件事。對不起,我不記得壁爐旁的東西。 –