SQL Server:要返回的最大记录数

时间:2011-06-08 11:17:02

标签: sql-server tsql

我们RowCount设置要返回或影响的记录数。但是我们需要在执行sql语句之前每次都设置它。我正在寻找一种方法来设置我的应用程序启动后,所以它会影响通过我的应用程序执行的所有查询。

更新

我希望实现有限记录的试用版策略!我不想弄乱我的实际代码,并希望以某种方式数据库限制记录的数量返回任何查询的结果!另一种方法是将参数传递给每个商店 - 程序,但我真的不喜欢这个并寻找其他策略!

3 个答案:

答案 0 :(得分:6)

您可以在代码中为所有命令

设置TOP参数
DECLARE @rows int
SET @row = ISNULL(@row, 2000000000)
SELECT TOP (@rows) ... FROM ..

您可以通过这种方式为所有查询全局定义TOP,例如通过包装或扩展SQLCommand

SET ROWCOUNT不是一个安全的选项:它会影响中间结果集并具有其他不可预测的行为。在I / U / D DML中忽略它被忽略:see MSDN

  

使用SET ROWCOUNT不会影响SQL Server下一版本中的DELETE,INSERT和UPDATE语句

答案 1 :(得分:2)

您没有提到您正在使用的应用程序语言,因此我无法为您提供代码,但为数据库连接创建包装函数。在此函数中,在连接到数据库之后,发出SET ROWCOUNT n,使n成为参数并添加使其变量所需的任何逻辑。我用CONTEXT_INFO做了类似的事情,我在连接函数中设置它。

请记住,您需要使用此包装函数连接到应用程序中的任何位置的数据库(使用搜索和替换),因此,您将始终设置rowcount。

答案 2 :(得分:0)

在应用程序启动时,通过执行以下命令重置RowCount

command.CommandText = "SET ROWCOUNT 0;";

激活特定模式后,执行以下命令将RowCount设置为所需的值:

command.CommandText = "SET ROWCOUNT " + rowCount + ";";

停用特定模式后,请再次重置RowCount


请参阅SET ROWCOUNT (Transact-SQL)