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_handle、statement_end_offset、sys.dm_exec_sql_text 動的管理関数と共に使用して、要求に対して現在実行中のステートメントを取得できます。 |
statement_end_offset |
int |
現在実行中のバッチまたはストアド プロシージャに含まれる、現在実行中のステートメントが終了するまでの文字数。 sql_handle、statement_start_offset、sys.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