Am einfachsten ist es, Ihren Code in eine Transaktion einzuschließen und dann jeden Stapel T-SQL-Code Zeile für Zeile auszuführen.
Beispielsweise,
Begin Transaction
-Do some T-SQL queries here.
Rollback transaction -- OR commit transaction
Wenn Sie die Fehlerbehandlung einbeziehen möchten, können Sie dies mit einem TRY ... CATCH BLOCK tun. Sollte ein Fehler auftreten, können Sie die Tranasction innerhalb des Catch-Blocks zurücksetzen.
Beispielsweise:
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
Weitere Informationen finden Sie unter folgendem Link.
http://msdn.microsoft.com/en-us/library/ms175976.aspx
Ich hoffe, das hilft, aber bitte lassen Sie mich wissen, wenn Sie weitere Details benötigen.
Ich möchte einen Punkt hinzufügen, den Sie auch (und sollten, wenn das, was Sie schreiben, komplex ist) eine Testvariable zum Rollback hinzufügen können, wenn Sie sich im Testmodus befinden. Dann können Sie das Ganze auf einmal ausführen. Oft füge ich auch Code hinzu, um die Vorher- und Nachher-Ergebnisse verschiedener Operationen anzuzeigen, insbesondere wenn es sich um ein komplexes Skript handelt.
Beispiel unten:
quelle