sys.dm_exec_requests(Transact-SQL)
SQL Server에서 실행 중인 각 요청에 대한 정보를 반환합니다.
[!참고]
SQL Server 외부의 코드(예: 확장 저장 프로시저 및 분산 쿼리)를 실행하려면 비선점형 스케줄러의 제어를 벗어나서 스레드를 실행해야 합니다. 작업자는 이 작업을 수행하기 위해 선점형 모드로 전환합니다. 이 동적 관리 뷰에서 반환된 시간 값은 선점형 모드에서 사용된 시간을 포함하지 않습니다.
열 이름 |
데이터 형식 |
설명 |
---|---|---|
session_id |
smallint |
이 요청과 관련된 세션의 ID입니다. Null을 허용하지 않습니다. |
request_id |
int |
요청의 ID입니다. 세션의 컨텍스트에서 고유합니다. Null을 허용하지 않습니다. |
start_time |
datetime |
요청이 도착한 타임스탬프입니다. Null을 허용하지 않습니다. |
status |
nvarchar(30) |
요청의 상태입니다. 다음 값 중 하나일 수 있습니다.
Null을 허용하지 않습니다. |
command |
nvarchar(16) |
처리되고 있는 명령의 현재 유형을 식별합니다. 일반 명령 유형은 다음과 같습니다.
요청 텍스트는 요청에 대한 해당 sql_handle과 함께 sys.dm_exec_sql_text를 사용하여 검색할 수 있습니다. 내부 시스템 프로세스는 수행하는 태스크 유형에 따라 명령을 설정합니다. 태스크는 다음과 같습니다.
Null을 허용하지 않습니다. |
sql_handle |
varbinary(64) |
요청에 대한 SQL 텍스트의 해시 맵입니다. Null을 허용합니다. |
statement_start_offset |
int |
현재 실행 중인 일괄 처리 또는 저장 프로시저에서 현재 실행 중인 문이 시작되는 위치까지의 문자 수입니다. sql_handle, statement_end_offset 및 sys.dm_exec_sql_text 동적 관리 함수와 함께 사용하여 요청에 대해 현재 실행 중인 문을 검색할 수 있습니다. Null을 허용합니다. |
statement_end_offset |
int |
현재 실행 중인 일괄 처리 또는 저장 프로시저에서 현재 실행 중인 문이 종료되는 위치까지의 문자 수입니다. sql_handle, statement_end_offset 및 sys.dm_exec_sql_text 동적 관리 함수와 함께 사용하여 요청에 대해 현재 실행 중인 문을 검색할 수 있습니다. Null을 허용합니다. |
plan_handle |
varbinary(64) |
SQL 실행을 위한 계획의 해시 맵입니다. Null을 허용합니다. |
database_id |
smallint |
요청을 실행 중인 대상 데이터베이스의 ID입니다. Null을 허용하지 않습니다. |
user_id |
int |
요청을 제출한 사용자의 ID입니다. Null을 허용하지 않습니다. |
connection_id |
uniqueidentifier |
요청이 도착한 연결의 ID입니다. Null을 허용합니다. |
blocking_session_id |
smallint |
요청을 차단하고 있는 세션의 ID입니다. 이 열이 NULL이면 요청이 차단되지 않거나 차단 세션의 세션 정보를 사용할 수 없습니다(또는 식별할 수 없음). -2 = 분리된 분산 트랜잭션이 차단 리소스를 소유합니다. -3 = 지연된 복구 트랜잭션이 차단 리소스를 소유합니다. -4 = 내부 래치 상태 전환 때문에 현재 차단 래치 소유자의 세션 ID를 확인할 수 없습니다. |
wait_type |
nvarchar(60) |
요청이 현재 차단된 경우 이 열은 대기 유형을 반환합니다. Null을 허용합니다. |
wait_time |
int |
요청이 현재 차단된 경우 이 열은 현재 대기의 기간(밀리초)을 반환합니다. Null을 허용하지 않습니다. |
last_wait_type |
nvarchar(60) |
이 요청이 이전에 차단된 경우 이 열은 마지막 대기의 유형을 반환합니다. Null을 허용하지 않습니다. |
wait_resource |
nvarchar(256) |
요청이 현재 차단된 경우 이 열은 요청이 현재 대기하고 있는 리소스를 반환합니다. Null을 허용하지 않습니다. |
open_transaction_count |
int |
이 요청에 대해 열린 트랜잭션 수입니다. Null을 허용하지 않습니다. |
open_resultset_count |
int |
이 요청에 대해 열린 결과 집합 수입니다. Null을 허용하지 않습니다. |
transaction_id |
bigint |
이 요청이 실행되는 트랜잭션의 ID입니다. Null을 허용하지 않습니다. |
context_info |
varbinary(128) |
세션의 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 |
이 요청을 예약하고 있는 스케줄러의 ID입니다. Null을 허용하지 않습니다. |
task_address |
varbinary(8) |
이 요청과 연관된 태스크에 할당된 메모리 주소입니다. Null을 허용합니다. |
reads |
bigint |
이 요청에서 수행된 읽기 수입니다. Null을 허용하지 않습니다. |
writes |
bigint |
이 요청에서 수행된 쓰기 수입니다. Null을 허용하지 않습니다. |
logical_reads |
bigint |
요청에서 수행된 논리적 읽기 수입니다. Null을 허용하지 않습니다. |
text_size |
int |
이 요청에 대한 TEXTSIZE 설정입니다. Null을 허용하지 않습니다. |
language |
nvarchar(128) |
요청에 대한 언어 설정입니다. 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 |
이 요청이 만들어진 트랜잭션의 격리 수준을 나타냅니다. 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 |
특정 요청이 루틴, 유형 및 트리거 같은 공용 언어 런타임 개체를 현재 실행하고 있는지 나타냅니다. 공용 언어 런타임 개체가 스택에 있을 때 항상 설정되며 공용 언어 런타임 내에서 Transact-SQL을 실행하는 동안에도 마찬가지입니다. Null을 허용하지 않습니다. |
group_id |
int |
이 쿼리가 속한 작업 그룹의 ID입니다. Null을 허용하지 않습니다. |
query_hash |
binary(8) |
쿼리에서 계산되는 이진 해시 값으로, 비슷한 논리를 가진 쿼리를 식별하는 데 사용됩니다. 쿼리 해시를 사용하여 리터럴 값만 다른 쿼리에 대한 집계 리소스 사용을 확인할 수 있습니다. 자세한 내용은 쿼리 및 쿼리 계획 해시를 사용하여 비슷한 쿼리 검색 및 튜닝을 참조하십시오. |
query_plan_hash |
binary(8) |
쿼리 실행 계획에서 계산되는 이진 해시 값으로, 비슷한 쿼리 실행 계획을 식별하는 데 사용됩니다. 쿼리 계획 해시를 사용하여 비슷한 실행 계획을 가진 쿼리의 누적 비용을 찾을 수 있습니다. 자세한 내용은 쿼리 및 쿼리 계획 해시를 사용하여 비슷한 쿼리 검색 및 튜닝을 참조하십시오. |
사용 권한
서버에 대한 VIEW SERVER STATE 권한이 필요합니다.
[!참고]
서버에 대한 VIEW SERVER STATE 권한이 있는 경우 사용자는 SQL Server 인스턴스에서 실행 중인 모든 세션을 볼 수 있습니다. 그렇지 않은 경우에는 현재 세션만 볼 수 있습니다.
예
1. 실행 중인 일괄 처리에 대한 쿼리 텍스트 찾기
다음 예에서는 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
2. 실행 중인 일괄 처리에서 보유하고 있는 모든 잠금 찾기
다음 예에서는 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
3. 현재 차단된 모든 요청 찾기
다음 예에서는 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