Lo más fácil es envolver su código en una transacción y luego ejecutar cada lote de código T-SQL línea por línea.
Por ejemplo,
Begin Transaction
-Do some T-SQL queries here.
Rollback transaction -- OR commit transaction
Si desea incorporar el manejo de errores, puede hacerlo mediante el uso de TRY ... CATCH BLOCK. Si se produce un error, puede revertir la transmisión dentro del bloque catch.
Por ejemplo:
USE AdventureWorks;
GO
BEGIN TRANSACTION;
BEGIN TRY
-- Generate a constraint violation error.
DELETE FROM Production.Product
WHERE ProductID = 980;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
GO
Vea el siguiente enlace para más detalles.
http://msdn.microsoft.com/en-us/library/ms175976.aspx
Espero que esto ayude, pero avíseme si necesita más detalles.
Quiero agregar un punto que también puede (y debería si lo que está escribiendo es complejo) agregar una variable de prueba para revertir si está en modo de prueba. Entonces puedes ejecutar todo de una vez. A menudo también agrego código para ver los resultados antes y después de varias operaciones, especialmente si se trata de un script complejo.
Ejemplo a continuación:
fuente