次の方法で共有


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) の 1 つを使用して宣言されています。

TSQL

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

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

種類 説明

Keyset

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

Dynamic

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

Snapshot

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

Fast_Forward

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

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

同時実行 説明

Read Only

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

Scroll Lock

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

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_handleproperties、および plan_generation_num 列の定義を修正しました。