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。 |
Snapshot | Cursor 已宣告為 Snapshot 或 Static。 |
Fast_Forward | Cursor 已宣告為 Fast Forward。 |
下表提供資料指標並行的相關資訊,並包含屬性資料行的可能值。
並行 | 描述 |
---|---|
唯讀 | 資料指標已宣告為唯讀。 |
捲動鎖定 | 資料指標使用捲動鎖定。 |
開放式 | 資料指標使用開放式並行控制。 |
下表提供資料指標範圍的相關資訊,並包含屬性資料行的可能值。
Scope | 描述 |
---|---|
區域 | 指定已建立資料指標的批次、預存程序或觸發程序,其資料指標的範圍為本機範圍。 |
全球 | 指定連接的資料指標範圍為全域。 |
範例
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)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應