Nested transactions are supported in SQL Server. The only caveat, if you want to call it that, is that if you do a rollback, it sets @@TRANCOUNT to 0 and rolls back to the outer most transaction – undoing anything that may have been committed in nested transactions. If you don't want this behaviour, you need to create savepoints, and explicitly name those savepoints in your rollback call.