Самый простой способ - обернуть ваш код транзакцией, а затем выполнить каждый пакет кода T-SQL построчно.
Например,
Begin Transaction
-Do some T-SQL queries here.
Rollback transaction -- OR commit transaction
Если вы хотите включить обработку ошибок, вы можете сделать это с помощью TRY ... CATCH BLOCK. В случае возникновения ошибки вы можете откатить транзакцию в блоке catch.
Например:
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
См. Следующую ссылку для получения более подробной информации.
http://msdn.microsoft.com/en-us/library/ms175976.aspx
Надеюсь, это поможет, но, пожалуйста, дайте мне знать, если вам понадобится дополнительная информация.
Я хочу добавить, что вы также можете (и должны, если то, что вы пишете, сложно) добавить тестовую переменную для отката, если вы находитесь в тестовом режиме. Тогда вы сможете выполнить все сразу. Часто я также добавляю код, чтобы увидеть результаты различных операций до и после, особенно если это сложный сценарий.
Пример ниже:
источник