sys.dm_exec_cursors (Transact-SQL)
適用於:SQL Server
傳回在各種資料庫中開啟之數據指標的相關信息。
語法
dm_exec_cursors (session_id | 0 )
引數
session_id | 0
工作階段的識別碼。 如果 指定session_id ,此函式會傳回指定會話中數據指標的相關信息。
如果指定 0,則函式會傳回所有工作階段之所有資料指標的相關信息。
傳回的資料表
資料行名稱 | 資料類型 | 描述 |
---|---|---|
session_id | int | 保存此數據指標之會話的標識碼。 |
cursor_id | int | 數據指針對象的標識碼。 |
name | nvarchar(256) | 使用者所定義之數據指標的名稱。 |
性能 | nvarchar(256) | 指定數據指標的屬性。 下列屬性的值會串連以形成此資料行的值: 宣告介面 數據指標類型 數據指標並行 數據指標範圍 數據指標巢狀層級 例如,此數據行中傳回的值可能是 “TSQL |動態 |開放式 |全球(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 | 執行此數據指標的背景工作角色所花費的時間,以微秒為單位。 |
讀 | bigint | 數據指標所執行的讀取數目。 |
寫 | bigint | 數據指標所執行的寫入數目。 |
dormant_duration | bigint | 啟動此數據指標上最後一個查詢(開啟或擷取)之後的毫秒數。 |
權限
需要伺服器上的 VIEW SERVER STATE 許可權。
SQL Server 2022 和更新版本的權限
需要伺服器上的 VIEW SERVER PERFORMANCE STATE 權限。
備註
下表提供數據指標宣告介面的相關信息,並包含屬性數據行的可能值。
屬性 | 說明 |
---|---|
API | 數據指標是使用其中一個數據存取 API 宣告的(ODBC、OLEDB)。 |
TSQL | Cursor 是使用 Transact-SQL DECLARE CURSOR 語法來宣告。 |
下表提供數據指標類型的相關信息,並包含屬性數據行的可能值。
類型 | 描述 |
---|---|
索引鍵集 | 數據指標已宣告為 Keyset。 |
動態 | 數據指標已宣告為 Dynamic。 |
快照式 | Cursor 已宣告為 Snapshot 或 Static。 |
Fast_Forward | 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
另請參閱
動態管理檢視和函數 (Transact-SQL)
執行相關的動態管理檢視和函數 (Transact-SQL)
sys.dm_exec_sessions (Transact-SQL)