共用方式為


sys.dm_exec_requests

更新: 2006 年 12 月 12 日

針對在 SQL Server 內執行的每個要求,各傳回一個資料列。sys.dm_exec_connectionssys.dm_exec_sessionssys.dm_exec_requests 伺服器範圍動態管理檢視會對應至 sys.sysprocesses 系統檢視 (先前為系統資料表)。

ms177648.note(zh-tw,SQL.90).gif附註:
若要執行 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_offsetsys.dm_exec_sql_text 動態管理函數和 sql_handle 一起使用,來擷取要求的執行陳述式。可為 Null。

statement_end_offset

int

在執行批次或預存程序中,執行陳述式的結尾字元位置。可與 statement_start_offsetsys.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_transactionssys.dm_tran_lockssys.dm_tran_database_transactions 動態管理檢視。不可為 Null。

context_info

varbinary(128)

從要求的 SET CONTEXT_INFO 陳述式取得的值。可為 Null。

percent_complete

real

某些作業 (包括回復) 的工作完成百分比。

ms177648.note(zh-tw,SQL.90).gif附註:

這不提供查詢的進度資料。

不可為 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 權限。

ms177648.note(zh-tw,SQL.90).gif附註:
如果使用者在伺服器上具有 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

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

新增內容:
  • 加入 SQL Server 2000 到 SQL Server 2005 的對應。
  • 加入範例。
  • 加入「關聯性基數」表格。
變更的內容:
  • 變更 start_timestatus、sql_handle、plan_handledatabase_id、user_id、connection_id、transaction_id、context_info、scheduler_id、task_address、language、date_format、transaction_isolation_level、date_first、executing_managed_code 的描述。

2005 年 12 月 5 日

新增內容:
  • 新增有關先佔式模式所花費時間的附註。
變更的內容:
  • 更正 wait_type 的資料類型。