sys.dm_exec_cursors (Transact-SQL)
傳回有關在不同資料庫開啟之資料指標的資訊。
語法
dm_exec_cursors (session_id | 0 )
引數
session_id | 0
工作階段的識別碼。 如果有指定 session_id,這個函數將傳回有關所指定工作階段中資料指標的資訊。如果指定 0,這個函數會傳回有關所有工作階段的所有資料指標的資訊。
傳回的資料表
資料行名稱 |
資料類型 |
說明 |
---|---|---|
session_id |
int |
保留這個資料指標的工作階段識別碼。 |
cursor_id |
int |
資料指標物件的識別碼。 |
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) 宣告。 |
TSQL |
資料指標是使用 Transact-SQL DECLARE CURSOR 語法宣告。 |
下表提供有關資料指標類型的資訊,並包括屬性資料行的可能值。
型別 |
說明 |
---|---|
索引鍵集 |
資料指標宣告為索引鍵集。 |
動態 |
資料指標宣告為動態。 |
快照集 |
資料指標宣告為快照集或靜態。 |
Fast_Forward |
資料指標宣告為向前快轉。 |
下表提供有關資料指標並行的資訊,並包括屬性資料行的可能值。
並行 |
說明 |
---|---|
唯讀 |
資料指標宣告為唯讀。 |
捲動鎖定 |
資料指標使用捲動鎖定。 |
開放式 |
資料指標使用開放式並行存取控制項。 |
下表提供有關資料指標範圍的資訊,並包括屬性資料行的可能值。
範圍 |
說明 |
---|---|
本機 |
指定已建立資料指標的批次、預存程序或觸發程序,其資料指標的範圍為本機範圍。 |
全域 |
指定連接的資料指標範圍為全域。 |
範例
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