配置 cursor threshold(服务器配置选项)

适用于:SQL Server

本主题说明如何使用 SQL Server Management Studio 或 Transact-SQL 配置在 SQL Server 中配置游标阈值服务器配置选项。 cursor threshold 选项指定游标集中的行数,超过此行数,将异步生成游标键集。 当游标为结果集生成键集时,查询优化器会估算将为该结果集返回的行数。 如果查询优化器估算出的返回行数大于此阈值,则将异步生成游标,使用户能够在继续填充游标的同时从该游标中提取行。 否则,同步生成游标,查询将一直等待到返回所有行。

本主题内容

开始之前

限制和局限

  • SQL Server 不支持异步生成由键集驱动的或静态的 Transact-SQL 游标。 Transact-SQL 游标操作(如 OPEN 或 FETCH)均为批处理,所以无需异步生成 Transact-SQL 游标。 SQL Server 由于每个游标操作都需要进行客户端往返,因此继续支持异步的由键集驱动的或静态的应用程序编程接口 (API) 服务器游标,对于这些游标,OPEN 实现低延迟时间很重要。

  • 查询优化器估计键集中行数的准确性取决于游标中每个表统计信息的当前值。

建议

  • 此选项是一个高级选项,仅应由有经验的数据库管理员或认证的 SQL Server 专业人员更改。

  • 如果将 游标阙值 设置为 -1,则所有游标键集将同步生成,这对于小游标集很有用。 如果将 cursor threshold 设置为 0,则所有游标键集将异步生成。 如果 cursor threshold为其他值,则查询优化器将比较该值与游标集中的所需行数,如果后者大于前者,则将异步生成键集。 不要将 cursor threshold 的值设置得过低,因为最好以同步方式创建小结果集。

安全性

权限

默认情况下,所有用户都具备不带参数或仅带第一个参数的 sp_configure 的执行权限。 若要执行带两个参数的 sp_configure 以更改配置选项或运行 RECONFIGURE 语句,则用户必须具备 ALTER SETTINGS 服务器级别的权限。 ALTER SETTINGS 权限由 sysadminserveradmin 固定服务器角色隐式持有。

使用 SQL Server Management Studio

配置 cursor threshold 选项

  1. 在对象资源管理器中,右键单击服务器并选择 “属性”

  2. 单击 “高级” 节点。

  3. “杂项” 下,将 “游标阈值” 选项更改为所需的值。

“使用 Transact-SQL”

配置 cursor threshold 选项

  1. 连接到 数据库引擎。

  2. 在标准菜单栏上,单击 “新建查询”

  3. 将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。 此示例说明如何使用 sp_configurecursor threshold 选项设置为 0 ,以便异步生成游标键集。

USE AdventureWorks2022;  
GO  
EXEC sp_configure 'show advanced options', 1 ;  
GO  
RECONFIGURE  
GO  
EXEC sp_configure 'cursor threshold', 0 ;  
GO  
RECONFIGURE  
GO  
  

有关详细信息,请参阅服务器配置选项 (SQL Server)

跟进:在配置 cursor threshold 选项之后

该设置将立即生效,无需重新启动服务器。

另请参阅

@@CURSOR_ROWS (Transact-SQL)
RECONFIGURE (Transact-SQL)
服务器配置选项 (SQL Server)
sp_configure (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)