2016-12-04 54 views
0
SELECT * 
FROM [Production].[Product] 

BEGIN TRY 
    BEGIN TRAN; 
     UPDATE [Production].[Product] 
     SET Color = 'Off White' 

     SELECT * 
     FROM [Production].[Product] 

     SELECT @@TRANCOUNT AS 'Transaction Count' 

    COMMIT TRAN; 
END TRY 
BEGIN CATCH 
    ROLLBACK TRAN; 
END CATCH; 

SELECT *, @@TRANCOUNT AS 'Transaction Count' 
FROM [Production].[Product] 

我沒有收到任何錯誤,但這些更改沒有像他們應該回滾的那樣......任何想法?無法獲取SQL Server 2012事務回滾

+0

由於它位於TRY塊中,因此只能在TRY失敗時回退。如果你沒有錯誤,預期的結果是TRAN不回滾。你沒有TRY/CATCH運行這個查詢嗎? –

+0

選擇* 從[生產] [產品] \t BEGIN TRAN; \t \t UPDATE [製造] [產品] \t \t SET顏色= '米白色' \t \t SELECT * \t \t FROM [製造] [產品] \t \t SELECT @@ TRANCOUNT AS '交易計數' \t COMMIT TRAN; \t ROLLBACK TRAN; SELECT *,@@ TRANCOUNT AS「交易計數」 FROM [製造] [產品]」 –

+0

變化還是不會回滾 –

回答

0
SELECT * 
FROM [Production].[Product] 

BEGIN TRAN; 
SAVE TRAN Product1; 
    UPDATE [Production].[Product] 
    SET Color = 'Off White' 
    SELECT * 
    FROM [Production].[Product] 
    SELECT @@TRANCOUNT AS 'Transaction Count' 
    ROLLBACK TRAN Product1; 
COMMIT TRAN; 




SELECT * 
FROM [Production].[Product] 
SELECT @@TRANCOUNT AS 'Transaction Count' 

這工作,因爲我需要它,以爲我會分享財富〜

編輯1:忘了包括對代碼的關鍵變化,我只是個普通人!