我需要改进项目中的一些现有存储过程,以便更好地处理事务。我知道我可以在我的程序中使用SET XACT_Abort ON语句,以便在出现错误时自动回滚事务。我还可以使用Try / Catch块进行错误处理,并在出现错误时回滚Catch块中的事务?我的问题是这两者之间的主要区别是什么?为什么我应该使用另一个呢?在决定这两者之间是否有任何指导方针?
答案 0 :(得分:1)
Try / Catch块是SQL Server 2005的新增功能,允许您处理错误,而不仅仅是将它们回滚 - Try / Catch块将您限制为单个批处理,但当然这在存储过程中没有实际意义。如果您的程序必须与以前版本的SQL Server保持兼容,那么您可以考虑XACT_ABORT,如果它有帮助,但我会提交Try / Catch是继续前进的方法。