sys.dm_exec_requests
更新: 2006 年 12 月 12 日
針對在 SQL Server 內執行的每個要求,各傳回一個資料列。sys.dm_exec_connections、sys.dm_exec_sessions 和 sys.dm_exec_requests 伺服器範圍動態管理檢視會對應至 sys.sysprocesses 系統檢視 (先前為系統資料表)。
附註: |
---|
若要執行 SQL Server 外部的程式碼 (例如,擴充預存程序和分散式查詢),執行緒必須在非先佔式排程器的控制之外執行。若要這麼做,工作者必須切換到先佔式模式。這個動態管理檢視傳回的時間值不包括先佔式模式所花費的時間。 |
資料行名稱
資料類型
描述
session_id
smallint
這個要求相關的工作階段識別碼。不可為 Null。
request_id
int
要求的識別碼。在工作階段的內容中是唯一的。不可為 Null。
start_time
datetime
要求排定執行的時間。不可為 Null。
status
nvarchar(60)
要求的狀態。可能的值如下:
- 背景。要求是背景執行緒,例如資源監視器或死結監視器。
- 執行中。要求正在執行。
- 可執行的。要求正在執行中,但因沒有仲裁而暫時停止。
- 睡眠中。沒有要執行的工作。
- 暫止。要求正等待工作者收取。
- 已暫停。要求正等待某事件。
不可為 Null。
command
nvarchar(32)
識別目前所處理命令的類型。常見命令類型包括下列項目:
- SELECT
- INSERT
- UPDATE
- DELETE
- BACKUP LOG
- BACKUP DB
- DBCC
- WAITFOR
要求的文字可使用 sys.dm_exec_sql_text 動態管理函數加上要求的對應 sql_handle 來擷取。內部系統處理序會根據其所執行工作的類型來設定命令。工作包括下列項目:
- LOCK MONITOR
- CHECKPOINTLAZY
- WRITER
不可為 Null。
sql_handle
varbinary(64)
要求之 SQL 陳述式的控制碼。這個控制碼可用來從 sys.dm_exec_sql_text 動態管理函數擷取實際的陳述式文字。不可為 Null。
statement_start_offset
int
在執行批次或預存程序中,執行陳述式的開頭字元位置。可與 statement_end_offset、sys.dm_exec_sql_text 動態管理函數和 sql_handle 一起使用,來擷取要求的執行陳述式。可為 Null。
statement_end_offset
int
在執行批次或預存程序中,執行陳述式的結尾字元位置。可與 statement_start_offset、sys.dm_exec_sql_text 動態管理函數和 sql_handle 一起使用,來擷取要求的執行陳述式。可為 Null。
plan_handle
varbinary(64)
要求之查詢計劃的控制碼。若要檢視查詢計劃,請使用 sys.dm_exec_query_plan 動態管理函數。若要查詢計劃快取,請使用 sys.dm_exec_cached_plans 動態管理檢視。若要檢視計劃屬性,請使用 sys.dm_exec_plan_attributes 函數。可為 Null。
database_id
smallint
在其下執行要求的資料庫識別碼。如需資料庫的詳細資訊,請查詢 sys.databases 目錄檢視,或使用 db_name() 內建函數取得資料庫名稱。不可為 Null。
user_id
int
在其下執行要求的使用者識別碼。如需使用者的詳細資訊,請查詢 sys.database_principals 目錄檢視。不可為 Null。
connection_id
uniqueidentifier
要求到達所用連接的識別碼。如需實體或邏輯連接的詳細資訊,請查詢 sys.dm_exec_connections 動態管理檢視。可為 Null。
blocking_session_id
smallint
封鎖要求之工作階段的識別碼。如果這個資料行是 0,表示要求沒有被封鎖,或者無法取得或無法識別封鎖工作階段的資訊。
-2 = 封鎖資源是由被遺棄的分散式交易所擁有。
-3 = 封鎖資源是由延遲的復原交易所擁有。
-4 = 由於內部閂鎖狀態轉換,而無法判斷封鎖閂鎖擁有者的工作階段識別碼。
wait_type
nvarchar(60)
若要求被封鎖,這個資料行會傳回等候的類型。可為 Null。
wait_time
int
若要求被封鎖,這個資料行會傳回目前等候的持續時間 (以毫秒為單位)。不可為 Null。
last_wait_type
nvarchar(64)
如果這個要求先前被封鎖,這個資料行會傳回上次等候的類型。不可為 Null。
wait_resource
nvarchar(512)
若要求被封鎖,這個資料行會傳回要求目前等候的資源。不可為 Null。
open_transaction_count
int
為這項要求開啟的交易數目。不可為 Null。
open_resultset_count
int
為這項要求開啟的結果集數目。不可為 Null。
transaction_id
bigint
這項要求執行所在交易的識別碼。這個識別碼對 SQL Server 執行個體是唯一的。用來查詢 sys.dm_tran_active_transactions、sys.dm_tran_locks 或 sys.dm_tran_database_transactions 動態管理檢視。不可為 Null。
context_info
varbinary(128)
從要求的 SET CONTEXT_INFO 陳述式取得的值。可為 Null。
percent_complete
real
某些作業 (包括回復) 的工作完成百分比。
附註:
這不提供查詢的進度資料。
不可為 Null。
estimated_completion_time
bigint
僅供內部使用。不可為 Null。
cpu_time
int
要求所用的 CPU 時間 (以毫秒為單位)。不可為 Null。
total_elapsed_time
int
要求到達後所經過的總時間 (以毫秒為單位)。不可為 Null。
scheduler_id
int
排程這項要求之排程器的識別碼。如需這個排程器的詳細資訊,請查詢 sys.dm_os_schedulers 動態管理檢視。不可為 Null。
task_address
varbinary(8)
配置給這項要求之關聯工作的記憶體位址。如需這個工作的詳細資訊,請查詢 sys.dm_os_tasks 動態管理檢視。可為 Null。
reads
bigint
這項要求所執行的讀取數。不可為 Null。
writes
bigint
這項要求所執行的寫入數。不可為 Null。
logical_reads
bigint
這項要求所執行的邏輯讀取數。不可為 Null。
text_size
int
這項要求的 TEXTSIZE 設定。不可為 Null。
language
nvarchar(256)
這項要求的語言設定。可為 Null。
date_format
nvarchar(3)
這項要求的 DATEFORMAT 設定。可為 Null。
date_first
smallint
這項要求的 DATEFIRST 設定。不可為 Null。
quoted_identifier
bit
1 = 這項要求的 QUOTED_IDENTIFIER 是 ON。否則,便為 0。
不可為 Null。
arithabort
bit
1 = 這項要求的 ARITHABORT 設定是 ON。否則,便為 0。
不可為 Null。
ansi_null_dflt_on
bit
1 = 這項要求的 ANSI_NULL_DFLT_ON 設定是 ON。否則,便為 0。
不可為 Null。
ansi_defaults
bit
1 = 這項要求的 ANSI_DEFAULTS 設定是 ON。否則,便為 0。
不可為 Null。
ansi_warnings
bit
1 = 這項要求的 ANSI_WARNINGS 設定是 ON。否則,便為 0。
不可為 Null。
ansi_padding
bit
1 = 這項要求的 ANSI_PADDING 設定是 ON。
否則,便為 0。
不可為 Null。
ansi_nulls
bit
1 = 這項要求的 ANSI_NULLS 設定是 ON。否則,便為 0。
不可為 Null。
concat_null_yields_null
bit
1 = 這項要求的 CONCAT_NULL_YIELDS_NULL 設定是 ON。否則,便為 0。
不可為 Null。
transaction_isolation_level
smallint
這個要求的交易隔離等級。可能的值如下:
0 = Unspecified
1 = ReadUncomitted
2 = ReadCommitted
3 = Repeatable
4 = Serializable
5 = Snapshot
不可為 Null。
lock_timeout
int
這項要求的鎖定逾時期限 (以毫秒為單位)。不可為 Null。
deadlock_priority
int
這項要求的 DEADLOCK_PRIORITY 設定。不可為 Null。
row_count
bigint
這項要求傳回用戶端的資料列數。不可為 Null。
prev_error
int
這項要求執行期間最後一次發生的錯誤。不可為 Null。
nest_level
int
這項要求所執行程式碼的巢狀層級。不可為 Null。
granted_query_memory
int
配置給這項要求之查詢執行的頁數。不可為 Null。
executing_managed_code
bit
指出這個要求是否正在執行 Common Language Runtime 物件 (如常式、類型和觸發程序)。這是為 Common Language Runtime 物件在堆疊上的全部時間所設定,即使從 Common Language Runtime 執行 Transact-SQL 時也是如此。不可為 Null。
權限
需要伺服器的 VIEW SERVER STATE 權限。
附註: |
---|
如果使用者在伺服器上具有 VIEW SERVER STATE 權限,使用者會看到 SQL Server 執行個體上的所有執行中工作階段;否則,使用者只會看到執行 sys.dm_exec_requests 的工作階段。 |
關聯性基數
從 | 到 | 開啟/套用 | 關聯性 |
---|---|---|---|
sys.dm_exec_sessions |
sys.dm_exec_requests |
session_id |
一對零 或一對多 |
sys.dm_exec_requests |
sys.dm_exec_sql_text(sql_handle) |
CROSS APPLY OUTER APPLY |
零或一對 零或一 |
sys.dm_exec_requests |
sys.dm_exec_query_plan(plan_handle) |
CROSS APPLY OUTER APPLY |
零或一對 零或一 |
sys.dm_exec_requests |
sys.dm_exec_cached_plans |
plan_handle |
零或一對 零或一 |
sys.dm_exec_requests |
sys.dm_exec_plan_attributes(plan_handle) |
CROSS APPLY OUTER APPLY |
零或一對 零或一 |
sys.dm_exec_requests |
sys.databases |
database_id |
一對一 |
sys.dm_exec_requests |
sys.database_principals |
user_id = principal_id |
一對一 |
sys.dm_exec_connections |
sys.dm_exec_requests |
connection_id |
一對零 或一對一 |
sys.dm_exec_requests |
sys.dm_tran_active_transactions |
transaction_id |
一對一 |
範例
A. 找出執行批次的查詢文字
下列範例會查詢 sys.dm_exec_requests
,找出所需查詢並從輸出複製其 sql_handle
。
SELECT * FROM sys.dm_exec_requests;
GO
接下來,為取得陳述式文字,會使用複製的 sql_handle
及系統函數 sys.dm_exec_sql_text(sql_handle)
。
SELECT *
FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO
B. 找出執行批次保留的所有鎖定
下列範例會查詢 sys.dm_exec_requests
,找出所需批次並從輸出複製其 transaction_id
。
SELECT *
FROM sys.dm_exec_requests
GO
接下來,為找出鎖定資訊,會使用複製的 transaction_id
及系統函數 sys.dm_tran_locks
。
SELECT *
FROM sys.dm_tran_locks
WHERE request_owner_type = N'TRANSACTION'
AND request_owner_id = < copied transaction_id >;
GO
C. 找出所有目前被封鎖的要求
下列範例會查詢 sys.dm_exec_requests
,找出關於被封鎖要求的相關資訊。
SELECT session_id ,status ,blocking_session_id
,wait_type ,wait_time ,wait_resource
,transaction_id
FROM sys.dm_exec_requests
WHERE status = N'suspended';
GO
請參閱
參考
將 SQL Server 2000 系統資料表對應至 SQL Server 2005 系統檢視
動態管理檢視和函數
執行相關動態管理檢視和函數
sys.dm_os_memory_clerks
sys.dm_os_sys_info
sys.dm_exec_query_memory_grants
sys.dm_exec_query_plan
sys.dm_exec_sql_text
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 12 月 12 日 |
|
2005 年 12 月 5 日 |
|