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
이 요청과 관련된 세션의 ID입니다. Null을 허용하지 않습니다.
request_id
int
요청의 ID입니다. 세션의 컨텍스트에서 고유합니다. Null을 허용하지 않습니다.
start_time
datetime
요청을 실행하도록 예약된 시간입니다. Null을 허용하지 않습니다.
status
nvarchar(60)
요청의 상태입니다. 가능한 값은 다음과 같습니다.
- 백그라운드. 요청이 리소스 모니터 또는 교착 상태 모니터와 같은 백그라운드 스레드입니다.
- 실행 중. 요청이 실행되고 있습니다.
- 실행 가능. 요청이 실행되고 있으며 쿼럼 부족으로 인해 일시적으로 예약됩니다.
- 중지 중. 수행할 작업이 없습니다.
- 보류 중. 요청이 작업자의 선택을 기다리고 있습니다.
- 일시 중지됨. 요청이 일부 이벤트를 기다리고 있습니다.
Null을 허용하지 않습니다.
command
nvarchar(32)
처리되고 있는 명령의 유형을 식별합니다. 일반 명령 유형은 다음과 같습니다.
- SELECT
- INSERT
- UPDATE
- DELETE
- BACKUP LOG
- BACKUP DB
- DBCC
- WAITFOR
요청 텍스트는 요청에 대한 해당 sql_handle과 함께 sys.dm_exec_sql_text 동적 관리 함수를 사용하여 검색할 수 있습니다. 내부 시스템 프로세스는 수행하는 작업 유형에 따라 명령을 설정합니다. 작업은 다음과 같습니다.
- 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_end_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
요청을 실행하고 있는 데이터베이스의 ID입니다. 데이터베이스에 대한 자세한 내용을 보려면 sys.databases 카탈로그 뷰를 쿼리하십시오. 또는 데이터베이스 이름을 가져오기 위해 db_name() 내장 함수를 사용할 수 있습니다. Null을 허용하지 않습니다.
user_id
int
요청을 실행하고 있는 사용자 ID입니다. 사용자에 대한 자세한 내용을 보려면 sys.database_principals 카탈로그 뷰를 쿼리하십시오. Null을 허용하지 않습니다.
connection_id
uniqueidentifier
요청이 도착한 연결의 ID입니다. 물리적 연결 또는 논리적 연결에 대한 자세한 내용을 보려면 sys.dm_exec_connections 동적 관리 뷰를 쿼리하십시오. Null을 허용합니다.
blocking_session_id
smallint
요청을 차단하고 있는 세션의 ID입니다. 이 열이 0이면 요청이 차단되지 않거나, 차단 세션의 정보를 사용할 수 없거나 식별할 수 없습니다.
-2 = 분리된 분산 트랜잭션이 차단 리소스를 소유합니다.
-3 = 지연된 복구 트랜잭션이 차단 리소스를 소유합니다.
-4 = 내부 래치 상태 전환 때문에 차단 래치 소유자의 세션 ID를 확인할 수 없습니다.
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
이 요청이 실행되는 트랜잭션의 ID입니다. 이 ID는 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
이 요청을 예약하고 있는 스케줄러의 ID입니다. 이 스케줄러에 대한 자세한 내용을 보려면 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 = 지정되지 않음
1 = 커밋되지 않은 읽기
2 = 커밋된 읽기
3 = 반복 읽기
4 = 직렬화 가능
5 = 스냅숏
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을 허용하지 않습니다.
사용 권한
서버에 대한 VIEW SERVER STATE 권한이 필요합니다.
[!참고] 사용자에게 서버에 대한 VIEW SERVER STATE 권한이 있으면 SQL Server 인스턴스에서 실행 중인 모든 세션을 볼 수 있고, 그렇지 않으면 sys.dm_exec_requests가 실행되는 세션만 볼 수 있습니다.
관계 카디널리티
원본 | 대상 | 열 이름/APPLY | 관계 |
---|---|---|---|
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 |
일대일 |
예
1. 실행 중인 일괄 처리에 대한 쿼리 텍스트 찾기
다음 예에서는 원하는 쿼리를 찾고 출력에서 sql_handle
을 복사하기 위해 sys.dm_exec_requests
를 쿼리합니다.
SELECT * FROM sys.dm_exec_requests;
GO
그런 다음 문 텍스트를 가져오기 위해 시스템 함수 sys.dm_exec_sql_text(sql_handle)
와 함께 복사된 sql_handle
을 사용합니다.
SELECT *
FROM sys.dm_exec_sql_text(< copied sql_handle >);
GO
2. 실행 중인 일괄 처리가 보유하고 있는 모든 잠금 찾기
다음 예에서는 원하는 일괄 처리를 찾고 출력에서 transaction_id
를 복사하기 위해 sys.dm_exec_requests
를 쿼리합니다.
SELECT *
FROM sys.dm_exec_requests
GO
그런 다음 잠금 정보를 찾기 위해 시스템 함수 sys.dm_tran_locks
와 함께 복사된 transaction_id
를 사용합니다.
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
참고 항목
참조
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일 |
|