Exit and rollback everything in script on error
        Posted  
        
            by Jan W.
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Jan W.
        
        
        
        Published on 2010-05-26T08:05:08Z
        Indexed on 
            2010/05/26
            8:21 UTC
        
        
        Read the original article
        Hit count: 289
        
Hey guys !
I'm in a bit of a pickle here. I have a TSQL script that does a lot of database structure adjustments but it's not really safe to just let it go through when something fails.
to make things clear:
- using MS SQL 2005
- it's NOT a stored procedure, just a script file (.sql)
what I have is something in the following order
BEGIN TRANSACTION
    ALTER Stuff
    GO
    CREATE New Stuff
    GO
    DROP Old Stuff
    GO
IF @@ERROR != 0
    BEGIN
  PRINT 'Errors Found ... Rolling back'
  ROLLBACK TRANSACTION
  RETURN
    END
ELSE
     PRINT 'No Errors ... Committing changes'
     COMMIT TRANSACTION
just to illustrate what I'm working with ... can't go into specifics now, the problem ...
When I introduce an error (to test if things get rolled back), I get a statement that the ROLLBACK TRANSACTION could not find a corresponding BEGIN TRANSACTION. This leads me to believe that something when REALLY wrong and the transaction was already killed. what I also noticed is that the script didn't fully quit on error and thus DID try to execute every statement after the error occured. (I noticed this when new tables showed up when I wasn't expecting them because it should have rollbacked)
any help in this department is welcome
if more speficics are needed, ask!
greetz
© Stack Overflow or respective owner