2011-11-01 112 views
16

我正在使用無自動提交連接到SQL Server。如果一切順利,我會致電提交。否則,我只是退出。我是否需要顯式調用回滾,或者當我們關閉連接而不提交時它會自動回滾?如果我從未提交,是否需要調用回滾?

如果有問題,我正在執行SAS中proc sql中的SQL命令。

更新:看起來SAS可能會在proc sql塊的末尾自動調用commit,如果沒有調用rollback的話。所以在這種情況下,回滾將不僅僅是好的做法。這將是必要的。

最終更新:我們最終切換到了一個新系統,這在我看來與我們之前的系統相反。在沒有指定提交或回滾的情況下結束交易時,它將回滾。所以,下面給出的建議絕對是正確的:始終顯式提交或回滾。

回答

7

應該在連接關閉時回滾。強調應該有一個原因:-)

適當的事務和錯誤處理應該讓你在提交的條件滿足時總是提交,當它們不合適時回滾。我認爲在完成時始終提交或回滾是一個很好的習慣,而不是依賴於斷開/等。所需要的只是一個錯誤或不正確的/未關閉的會話來爲所有人創建一個阻塞鏈惡夢:-)

+1

連接池會對此產生什麼影響? –

+0

如果您在管理交易時考慮到最佳實踐,您不必擔心,@JoeStefanelli :-)我的意思是 - 1.)儘可能快地進出您的交易 - 僅執行其中的必要操作以保持足跡和影響較小,並且2)正確的錯誤處理和清理在完成時提交,在不完成時回滾。如果違反了這兩個基本原則,我不會批准改變我所處理的環境。所以連接池將不會有效果。 –

+0

同意當事情做得對時最好做你自己的顯式提交。我的問題更多地針對您的答案中的「***應回滾關閉連接」部分。 –

相關問題