Sql server SQLServer2005中事务处理的SETXACT_abort ON和try/catch块之间有什么区别?

Sql server SQLServer2005中事务处理的SETXACT_abort ON和try/catch块之间有什么区别?,sql-server,sql-server-2005,transactions,Sql Server,Sql Server 2005,Transactions,为了更好地处理事务,我需要改进项目中的一些现有存储过程。我知道我可以在我的过程中使用SET XACT_Abort ON语句,以便在出现错误时自动回滚事务。我还可以使用Try/Catch块进行错误处理,并在出现错误时回滚Catch块中的事务?我的问题是这两者之间的主要区别是什么,为什么我应该使用一个而不是另一个?在这两者之间做决定时,有什么指导原则可以使用吗?Try/Catch块是SQL server 2005的新功能,它允许您处理错误,而不仅仅是回滚错误-Try/Catch块将您限制为单个批处理

为了更好地处理事务,我需要改进项目中的一些现有存储过程。我知道我可以在我的过程中使用SET XACT_Abort ON语句,以便在出现错误时自动回滚事务。我还可以使用Try/Catch块进行错误处理,并在出现错误时回滚Catch块中的事务?我的问题是这两者之间的主要区别是什么,为什么我应该使用一个而不是另一个?在这两者之间做决定时,有什么指导原则可以使用吗?

Try/Catch块是SQL server 2005的新功能,它允许您处理错误,而不仅仅是回滚错误-Try/Catch块将您限制为单个批处理,但这在存储过程中当然没有意义。如果您的过程必须保持与以前版本的SQLServer兼容,如果有帮助,您可能会考虑XACTHYBART。但是我想说的是,Try/Catch是前进的方向。

Try/Catch块是SQL server 2005的新功能,它允许您处理错误,而不仅仅是回滚错误-Try/Catch块将您限制为单个批处理,但这在存储过程中当然没有意义。如果您的过程必须保持与以前版本的SQLServer兼容,如果有帮助,您可能会考虑XACTHYBART,但我会建议尝试/catch是前进的方式。