簡體   English   中英

C#:SQL事務

[英]C# : SQL Transaction

關閉連接后,是否可以在c#中檢索當前的SQL事務?

sqlTransaction.Save("savePoint"); 
sqlConnection.Close()              // im purposely closing it to test 

if (sqlConnection.State == ConnectionState.Close)
{
    sqlConnection.Open():

   // is it possible to resume the sql transaction when I re-open    
   // the sql connection? how? 
}

連接終止時,沒有SQL Server將回滾任何未提交的事務。

SqlTransaction.Save不會“保存”事務,而是創建一個事務保存點,這是完全不同的:

在事務中創建一個可用於回滾事務的一部分的保存點,並指定保存點名稱。

在提交事務以部分回滾該事務完成的某些工作之前 ,可以使用保存點。 一個典型的示例是嘗試執行可能會失敗的更新,因此您在執行更新之前先創建一個保存點,並在失敗的情況下回滾到該保存點,從而保留該保存點之前完成的所有工作。

有關如何使用保存點的示例,請參見異常處理和嵌套事務

現在回到您的問題,有沒有一種方法可以使連接啟動連接,關閉並在重新打開時選擇一筆交易? 從技術上講,通過使用(現在不建議使用) sp_getbindtokensp_bindsession 但這只是出於好奇,絕對沒有有效的方案讓您嘗試在兩個不同的會話(兩次重新打開連接)之間“重用”事務。

這似乎是對數據庫事務的誤解。 事務是與數據庫的全有或全無的對話。 如果通過關閉連接來關閉與數據庫的通信線路,則對話結束並且更改不會提交(“全有或全無”部分)。

不,我認為您不能這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM