[英]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_getbindtoken
和sp_bindsession
。 但這只是出於好奇,絕對沒有有效的方案讓您嘗試在兩個不同的會話(兩次重新打開連接)之間“重用”事務。
這似乎是對數據庫事務的誤解。 事務是與數據庫的全有或全無的對話。 如果通過關閉連接來關閉與數據庫的通信線路,則對話結束並且更改不會提交(“全有或全無”部分)。
不,我認為您不能這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.