sys.dm_exec_cursors (Transact-SQL)

各種データベースで開いているカーソルに関する情報を返します。

構文

dm_exec_cursors (session_id | 0 )

引数

  • session_id | 0
    セッションの ID を指定します。 session_id を指定した場合、この関数では指定したセッションのカーソルに関する情報が返されます。

    0 を指定した場合、この関数ではすべてのセッションのすべてのカーソルに関する情報が返されます。

返されるテーブル

列名

データ型

説明

session_id

int

カーソルを保持しているセッションの ID。

cursor_id

int

カーソル オブジェクトの ID。

name

nvarchar(256)

ユーザーによって定義されたカーソルの名前。

プロパティ

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

カーソルの前回のクエリ (開くまたはフェッチ) が開始されてから経過した時間 (ミリ秒単位)。

権限

サーバーに対する VIEW SERVER STATE 権限が必要です。

説明

次の表は、カーソル宣言インターフェイスの説明と、プロパティ列に返される値です。

プロパティ

説明

API

カーソルは、データ アクセス API (ODBC、OLEDB) の 1 つを使用して宣言されています。

TSQL

カーソルは、Transact-SQL DECLARE CURSOR 構文を使用して宣言されています。

次の表は、カーソルの種類に関する説明と、プロパティ列に返される値です。

説明

Keyset

カーソルはキーセットとして宣言されています。

Dynamic

カーソルは動的として宣言されています。

Snapshot

カーソルはスナップショットまたは静的として宣言されています。

Fast_Forward

カーソルは高速順方向として宣言されています。

次の表は、カーソルの同時実行に関する説明と、プロパティ列に返される値です。

同時実行

説明

Read Only

カーソルは読み取り専用として宣言されています。

Scroll Lock

カーソルでスクロール ロックが使用されています。

Optimistic

カーソルでオプティミスティック同時実行制御が使用されています。

次の表は、カーソルのスコープに関する説明と、プロパティ列に返される値です。

スコープ

説明

Local

カーソルのスコープは、カーソルが作成されたバッチ、ストアド プロシージャ、またはトリガーに対してローカルです。

Global

カーソルのスコープは、接続に対してグローバルです。

使用例

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

関連項目

参照

動的管理ビューおよび関数 (Transact-SQL)

実行関連の動的管理ビューおよび関数 (Transact-SQL)

sys.dm_exec_sessions (Transact-SQL)