SI事業では保守作業などでSQLを流してDB操作をすることがちょくちょくあります。(自社開発系は経験がないのでどうしてるか分かりません...)
今まで、ロールバックするように記述したスクリプトを発行し、正しく登録されることを確認してからコミットに書き直して登録という作業をしていました。
ですが、SQL Server には TRY-CATCH という構文が 2005 の時代からあるということを知ったのでメモしておこうと思います。
以下のように記載しておけば、コミットに書き直すなんて作業しなくなります。
begin try begin transaction -- 何かしらの更新処理 commit transaction end try begin catch -- 以下の select 文でキャッチしたエラーの詳細を確認する 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 rollback transaction -- sqlcmd などのツールにエラーを伝播させるための throw -- SQL Server Management Studio で発行する場合は不要 throw end catch