2012-08-05 96 views
1

下面是我嘗試實現的一個片段。我有一個嵌套事務 'TRAN2',我不能回滾在TSQL中回滾嵌套事務拋出錯誤

SELECT 'Before', * FROM [table] WHERE field .. 

BEGIN TRAN tran1 
UPDATE [table] set field ... WHERE field .. 

BEGIN TRAN tran2 
    SELECT 'During', * FROM [table] WHERE field .. 
    select @@trancount as 'transactioncount' 

    rollback tran tran2 

rollback TRAN tran1 
SELECT 'After', * FROM [table] WHERE field .. 

拋出我這個錯誤

消息6401,級別16,狀態1,行13
不能回滾TRAN2 。沒有找到該名稱的事務或保存點。

但是@@trancount是給我2個交易在這一點上

+3

閱讀Paul Randal的[SQL Server Myth一天:嵌套事務是真實的](http://www.sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-% 282630%29-nested-transactions-are-real.aspx) - SQL Server中不支持嵌套事務。在句法上,是的 - 你可以做到這一點 - 但實際上,你從來沒有真正擁有嵌套交易.... – 2012-08-06 04:56:02

回答