正在SQL中获取行计数值(不是@@ROWCOUNT)

正在SQL中获取行计数值(不是@@ROWCOUNT),sql,sql-server,tsql,rowcount,Sql,Sql Server,Tsql,Rowcount,有没有办法查看ROWCOUNT设置为什么 用于调用我的存储过程的组件有一个选项来限制返回的行数,但它显然是通过设置ROWCOUNT来实现的。一个存储过程只返回一个聚合行,但中间查询有时返回的值超过限制,并被截断。完成所有这一切的函数是泛型的,用于调用其他存储过程;我的其他一些程序可能需要限制 现在,我在存储过程的顶部将ROWCOUNT设置为一个非常大的数字,然后在返回结果之前将其设置回(硬编码的)常规限制。我不维护调用存储过程的组件,因此可能不知道返回的行限制是否已更改。我想做的是将一个局部变量

有没有办法查看ROWCOUNT设置为什么

用于调用我的存储过程的组件有一个选项来限制返回的行数,但它显然是通过设置ROWCOUNT来实现的。一个存储过程只返回一个聚合行,但中间查询有时返回的值超过限制,并被截断。完成所有这一切的函数是泛型的,用于调用其他存储过程;我的其他一些程序可能需要限制


现在,我在存储过程的顶部将ROWCOUNT设置为一个非常大的数字,然后在返回结果之前将其设置回(硬编码的)常规限制。我不维护调用存储过程的组件,因此可能不知道返回的行限制是否已更改。我想做的是将一个局部变量设置为当前的ROWCOUNT值,然后在末尾将其设置回原来的值。是否有任何方法可以实际查看ROWCOUNT设置为什么?

如果查询sys.dm\u exec\u sessions dmv,它将返回会话上返回的行数(当然应该与@ROWCOUNT相同)

你也许可以玩一下,看看你是否能用上它

现在,我在存储过程的顶部将ROWCOUNT设置为一个非常大的数字

您也可以只执行
设置行数0
,在这种情况下,它将返回所有行

停止使用。不管怎么说,它已经部分被弃用了

使用自SQL Server 2000:11年以来一直存在的TOP。这是每个查询,不影响中间行,这意味着您可以在需要时应用它,而不是像现在这样全局应用

编辑,2012年2月


它将在下一个版本中删除,这是在

很高兴了解SET ROWCOUNT 0之后,我不确定默认值是什么。我想做的是设置ROWCOUNT 500,然后从sys.dm_exec_会话中选择ROWCOUNT,然后返回数字500。可能是的,但我使用的是Delphi 7,它似乎就是这样在ADO查询中强制执行MaxRecords值的。
SELECT row_count FROM sys.dm_exec_sessions
WHERE session_id = @@spid