巢狀交易導致資料獨立擷取寫不出來的異常_The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.

 

最近在debug一隻差不多有4000多行的SP
此外這隻行之有年的SP,大約活了30年有。
還層層去call不同SP,當中包了一堆的階段性transaction。
我知道農曆七月還沒到,但這是真實的鬼故事。
需求就是要求要在此隻已經有歷史包袱的SP再去頂樓違建加蓋

最近在整合測試過程中也陸續有相關BUG Issue回饋要工程師修正
想將階段性跑出來前置單據的table資料給單獨存出來
好讓我額外包出來的SP比較能夠關注點分離去單元測試。

此時就發現了無論我是透過select * into 寫到全域性暫存表(##)
又或者insert into 一個table schema完全相同的copy_table皆無效

第一時間其實就有猜疑可能是transaction rollback導致的靈異現象。
再參考了多篇網文後,只要於測試區資料庫暫時性的透過@@TRANCOUNT比對一下交易數量
如果跑到你想要抽絲剝繭關注點分離的區塊就先暫時COMMIT;讓後續跑的區段不會受到交易包覆異常,等修完BUG在改回去,當然前提是在測試區資料庫。


Ref:
https://www.cnblogs.com/JiaX/p/5667638.html
http://vito-note.blogspot.com/2013/05/transactions.html
https://note.robinks.net/2015/06/using-transaction-procedure-template.html
https://littlehorseboy.github.io/2020/07/05/202007-t-sql-save-tran/#%E5%BB%BA%E7%AB%8B%E4%B8%80%E5%BC%B5-Table-%E4%BE%86-INSERT

留言

這個網誌中的熱門文章

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

(2021年度)駕訓學科筆試準備題庫歸納分析_法規是非題