sys.dm_exec_cursors

更新日期: 2006 年 12 月 12 日

返回有关在各种数据库中打开的游标的信息。

语法

 dm_exec_cursors (session_id | 0 )

参数

  • session_id | 0
    会话的 ID。如果指定了 session_id,则此函数返回有关指定会话中的游标信息。

    如果指定了 0,则此函数返回有关所有会话的所有游标的信息。

返回的表

列名 数据类型 说明

session_id

int

持有此游标的会话 ID。

cursor_id

int

游标对象的 ID。

name

nvarchar(256)

用户定义的游标名称。

properties

nvarchar(256)

指定游标的属性。下列属性的值连在一起可构成此列的值:

  • 声明接口
  • 游标类型
  • 游标并发
  • 游标范围
  • 游标嵌套级别

例如,在此列中返回的值可能为 TSQL | Dynamic | Optimistic | Global (0)。

sql_handle

varbinary(64)

声明游标的批处理的文本句柄。

statement_start_offset

int

在当前正在执行的批处理或存储过程中,指示当前正在执行的语句开始位置的字符数。可以与 sql_handlestatement_end_offsetsys.dm_exec_sql_text 动态管理函数一起使用,以便为请求检索当前正在执行的语句。

statement_end_offset

int

在当前正在执行的批处理或存储过程中,指示当前正在执行的语句结束位置的字符数。可以与 sql_handlestatement_start_offsetsys.dm_exec_sql_text 动态管理函数一起使用,以便为请求检索当前正在执行的语句。

plan_generation_num

bigint

可用于在重新编译后区分不同计划实例的序列号。

creation_time

datetime

创建此游标时的时间戳。

is_open

bit

指定游标是否处于打开状态。

is_async_population

bit

指定后台线程是否仍异步填充 KEYSET 或 STATIC 游标。

is_close_on_commit

bit

指定是否使用 CURSOR_CLOSE_ON_COMMIT 声明游标。

1 = 事务结束时将关闭游标。

fetch_status

int

返回游标的上一提取状态。这是上次返回的 @@FETCH_STATUS 值。

fetch_buffer_size

int

返回有关提取缓冲区大小的信息。

1 = Transact-SQL 游标。对于 API 游标,可以将该参数设置为更高的值。

fetch_buffer_start

int

对于 FAST_FORWARD 和 DYNAMIC 游标,如果游标未打开或被放在第一行之前,则该参数返回 0。否则,返回 -1。

对于 STATIC 和 KEYSET 游标,如果游标未打开,则该参数返回 0;如果游标放在最后一行之外,则该参数返回 -1。

在其他情况下,该参数返回游标所在的行号。

ansi_position

int

游标在提取缓冲区中的位置。

worker_time

bigint

辅助线程执行此游标所用的时间(毫秒)。

reads

bigint

游标所执行的读取次数。

Writes

bigint

游标所执行的写入次数。

dormant_duration

bigint

自上次对此游标启动查询(打开或提取)以来所经过的时间(毫秒)。

备注

下表提供了有关游标声明接口的信息,并列出了这些属性列的可能值。

属性 说明

API

使用一个数据访问 API(ODBC、OLEDB)声明游标。

TSQL

使用 Transact-SQL DECLARE CURSOR 语法声明游标。

下表提供了有关游标类型的信息,并列出了这些属性列的可能值。

类型 说明

Keyset

将游标声明为键集。

Dynamic

将游标声明为动态。

Snapshot

将游标声明为快照或静态。

Fast_Forward

将游标声明为快进。

下表提供了有关游标并发的信息,并列出了这些属性列的可能值。

并发 说明

Read Only

将游标声明为只读。

Scroll Locks

游标使用滚动锁。

Optimistic

游标使用乐观并发控制。

下表提供了有关游标范围的信息,并列出了这些属性列的可能值。

范围 说明

Local

指定该游标的范围对在其中创建它的批处理、存储过程或触发器是局部的。

Global

指定该游标范围对连接是全局的。

权限

需要对服务器具有 VIEW SERVER STATE 权限。

示例

A. 检测旧游标

以下示例返回有关在服务器上打开时间超过指定时间(36 小时)的游标的信息。

SELECT creation_time, cursor_id, name, c.session_id, login_name 
FROM sys.dm_exec_cursors(0) AS c 
JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id 
WHERE DATEDIFF(hh, c.creation_time, GETDATE()) > 36;
GO

请参阅

参考

动态管理视图和函数
与执行有关的动态管理视图和函数

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

更改的内容:
  • 更正了 sql_handlepropertiesplan_generation_num 列的定义。