Jam*_*man 3 sql t-sql sql-server nocount
我们引入了一个用于调用SQL存储过程的新数据访问框架.当调用返回记录集的存储过程时,我们遇到了存储过程也执行某种更新(插入/更新/删除)的问题:
无法更改具有Command对象作为其源的Recordset对象的ActiveConnection属性.
解决方法是在存储过程的顶部添加"SET NOCOUNT ON".这很好用,当然,它也有一个吹捧性能增强.
我们建议开发人员,当他们想编写代码来调用现有的存储过程时,他们还必须重构存储过程本身以包含SET NOCOUNT ON
.
但是,这让我想知道,对包括所有存储过程进行全面更新的潜在后果/风险是什么SET NOCOUNT ON
.在什么情况下会破坏SP的功能?(假设即使SET NOCOUNT为ON,@@ ROWCOUNT函数也会更新)
一如既往的帮助,非常感谢.
我认为主要的危险是,如果您的任何现有进程查找和/或假设将返回rowcount而不显式查询其值@@ROWCOUNT
.
您的代码中的某个位置可能是执行的存储过程,并且应用程序等待返回行值以确定它已完成,在这种情况下,应用程序将无限期挂起.
归档时间: |
|
查看次数: |
591 次 |
最近记录: |