La cosa easisest fare è di avvolgere il tuo codice in una transazione, quindi esegui ogni batch di codice T-SQL riga per riga.
Per esempio,
Begin Transaction
-Do some T-SQL queries here.
Rollback transaction -- OR commit transaction
Se si desidera incorporare la gestione è possibile farlo utilizzando una TRY ... CATCH BLOCK errore. Se si verifica un errore, è possibile eseguire il rollback della transizione all'interno del blocco catch.
Ad esempio:
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
vedere il seguente link per maggiori informazioni.
http://msdn.microsoft.com/en-us/library/ms175976.aspx
Spero che questo aiuti, ma per favore fatemi sapere se avete bisogno di ulteriori dettagli.
fonte
2009-02-03 10:27:43
Ciao, grazie. Ho visto per la prima volta circa @@ TRANCOUNT qui e puoi dirmi cosa succede a "IF @@ TRANCOUNT> 0 COMMIT TRANSACTION" dopo l'elaborazione di ROLLBACK? e quale valore ha @ TRANCOUNT? Grazie ancora. – QMaster
Dopo aver eseguito la transazione ROLLBACK TRANSACTION @@ TRANCOUNT viene impostato su 0. In questo modo COMMIT TRANSACTION non verrà eseguito. Vedere https://msdn.microsoft.com/de-de/library/ms187967.aspx –