使用SET ROWCOUNT是否安全?

Bru*_*oLM 6 sql-server rowcount sql-server-2008

我正在使用,SET ROWCOUNT因为值来自我的过程中的参数.

SET ROWCOUNT @take 

SELECT * FROM Something

SET ROWCOUNT 0
Run Code Online (Sandbox Code Playgroud)

是否可以同时执行另一个过程并获取rowcount设置,或者在存储过程中使用它是否非常安全?

HLG*_*GEM 8

Rowcount特定于您当前的范围,因此您在那里安全.但是,联机丛书告诉我这(可能会或可能不会影响您的需求):

使用SET ROWCOUNT不会影响SQL Server下一版本中的DELETE,INSERT和UPDATE语句.不要在新的开发工作中将SET ROWCOUNT与DELETE,INSERT和UPDATE语句一起使用,并计划修改当前使用它的应用程序.此外,对于当前使用SET ROWCOUNT的DELETE,INSERT和UPDATE语句,我们建议您重写它们以使用TOP语法.有关更多信息,请参见DELETE(Transact-SQL),INSERT(Transact-SQL)或UPDATE(Transact-SQL).

TOP也可以使用变量,现在可以在INSERT,UPDATE和DELETE语句中使用.(嘿,我今天学到了新东西.)查看如何在联机丛书中使用TOP和变量.


Rya*_*ade 6

我正在添加此答案,以便仍然可以搜索此问题的人员.

使用SET ROWCOUNT不再安全,因为它将在下一版本的SQL Server中弃用:

TechNet:不推荐使用的数据库引擎功能