sys.dm_exec_requests

업데이트: 2006년 12월 12일

SQL Server 내에서 실행 중인 각 요청에 대해 행 하나를 반환합니다. sys.dm_exec_connections, sys.dm_exec_sessionssys.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

롤백을 포함하여 특정 작업에 대해 완료된 작업의 백분율입니다.

ms177648.note(ko-kr,SQL.90).gif참고:

쿼리에 대한 진행률 데이터를 제공하지는 않습니다.

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

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 12월 12일

새로운 내용
  • SQL Server 2000에서 SQL Server 2005로의 매핑에 대한 정보를 추가했습니다.
  • 예를 추가했습니다.
  • 관계 카디널리티 표를 추가했습니다.
변경된 내용
  • start_time, status, sql_handle, plan_handle, database_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의 데이터 형식을 수정했습니다.