2016-12-04 4 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] 

Ich bekomme keine Fehler, aber die Änderungen sind nicht zurückrollen, wie sie sollen ... irgendwelche Gedanken?Kann nicht SQL Server 2012-Transaktion Rollback

+0

Da es in einem TRY-Block ist, sollte es nur zurückrollen, wenn der TRY fehlschlägt. Wenn Sie keine Fehler haben, wäre das erwartete Ergebnis, dass der TRAN nicht zurückgesetzt wird. Haben Sie diese Abfrage ohne TRY/CATCH ausgeführt? –

+0

SELECT * VON [Produktion]. [Produkt] \t BEGIN TRAN; \t \t UPDATE [Production]. [Artikel] \t \t SET Farbe = 'Off White' \t \t SELECT * \t \t FROM [Produktion]. [Artikel] \t \t SELECT @@ TRANCOUNT AS 'Transaktion Count' \t COMMIT TRAN; \t ROLLBACK TRAN; SELECT *, @@ TRANCOUNT AS 'Transaktion Count' FROM [Produktion]. [Artikel]‘ –

+0

Änderungen werden noch nicht zurückgerollt –

Antwort

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' 

Dies funktioniert, wie ich es brauchte, dachte ich den Reichtum teilen würde ~

Edit 1: Vergessen entscheidende Änderungen am Code zu schließen, ich bin auch nur ein Mensch!