Sql 尝试捕获-资源强度?

Sql 尝试捕获-资源强度?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我已经读到,在SQL Server存储过程中使用Try-Catch块会占用大量服务器资源。我的问题是它使用了多少资源 目前,每当存储过程进行大量数据更改时,我都会使用Try-Catch块和事务,这对于防止不正确的数据进入数据库和记录错误非常有用,但我希望在我的所有存储过程中都使用这种编程方法 它有多大区别?零。使用TRY/CATCH的代码与不使用TRY/CATCH的代码消耗的资源完全相同,唯一的区别是前者通常比后者更正确。事实上,TRY/CATCH代码在出现错误时效率更高,因为代码流直接跳到CA

我已经读到,在SQL Server存储过程中使用Try-Catch块会占用大量服务器资源。我的问题是它使用了多少资源

目前,每当存储过程进行大量数据更改时,我都会使用Try-Catch块和事务,这对于防止不正确的数据进入数据库和记录错误非常有用,但我希望在我的所有存储过程中都使用这种编程方法


它有多大区别?

零。使用TRY/CATCH的代码与不使用TRY/CATCH的代码消耗的资源完全相同,唯一的区别是前者通常比后者更正确。事实上,TRY/CATCH代码在出现错误时效率更高,因为代码流直接跳到CATCH块,并且避免运行请求/存储过程中的其余语句,而只在最后回滚

为了记录在案,我一秒钟也不认为在每条语句后编写检查@错误的代码是一种可行的选择


我在大学时读过一本书


当然,阅读并没有用TI/catch来引用T-SQL代码,而是引用有或没有例外的C++代码(JVM或IL)。在黑暗时代,关于是否添加异常处理代码有性能影响(是的,它有),以及我们是否应该考虑这一因素(不,我们不应该,异常处理的代码早就因为正确性而赢得了这场战斗)存在争议。但是,从您的角度来看,这个讨论完全没有用:运行T-SQL的后端引擎是使用异常处理编译的,对此您无能为力。同样,这对您的T-SQL代码没有影响。

您在哪里读到的?你有链接吗?我对此做了一些测试——我在大学时读过一本书,但记不起确切的名字。检查错误需要一些资源,这是有道理的,但我只是想知道有多少。@JAT-这是专门谈论SQL Server还是
try。。。catch
一般情况下?@JAT-不,在
开始尝试中使用语句肯定没有显著区别。。。结束尝试开始捕获。。。末端锁扣
。我从未测试过是否存在任何可测量的差异,但如果存在的话,它将很小。谢谢。我喜欢在脚本中使用Try-Catch,但由于我们处理的事务量很大,所以总是被告知不要使用它。我的逻辑还告诉我,在发生错误后立即结束脚本比先查询@错误更有效。谢谢你,有什么关系