在一般情況下,我只是希望能夠做到這一點:嵌套事務,履行回滾
begin transaction
begin transaction
select 'x'
rollback
rollback
的原因是,我有一個代碼存儲的過程是這樣的:
begin transaction
--Do stuff
If(problem)
begin
rollback
end else begin
commit
end
它就像我想要的那樣工作,但我想通過這樣做來測試它:
begin transaction
exec MyStoredProc
rollback
當存儲的proc執行回滾時,它似乎s來關閉這兩個事務,然後在存儲過程之外回滾失敗。
SQL Server並沒有真正的嵌套事務。當然,你可以將它們嵌入代碼中 - 但最終總是隻有一個事務,如果你將其中一個回滾,那麼所有向外「嵌套」的回滾也會回滾。請參閱[SQL Server數據庫管理員誤解26/30 - 嵌套事務是真實的](http://www.sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-(2630) - nested-transactions-are-real.aspx)瞭解更多信息。 –