다음을 통해 공유


sys.dm_exec_cursors(Transact-SQL)

적용 대상: SQL Server

다양한 데이터베이스에 열려 있는 커서에 대한 정보를 반환합니다.

구문

  
dm_exec_cursors (session_id | 0 )  

인수

session_id | 0
세션의 ID입니다. session_id 지정한 경우 이 함수는 지정된 세션의 커서에 대한 정보를 반환합니다.

0을 지정하면 모든 세션의 모든 커서에 대한 정보가 반환됩니다.

반환된 테이블

열 이름 데이터 형식 설명
session_id int 이 커서를 보유하는 세션의 ID입니다.
cursor_id int 커서 개체의 ID입니다.
이름 nvarchar(256) 사용자가 정의한 커서의 이름입니다.
속성 nvarchar(256) 커서의 속성을 지정합니다. 다음 속성의 값은 이 열의 값을 구성하도록 연결됩니다.
선언 인터페이스
커서 유형
커서 동시성
커서 범위
커서 중첩 수준

예를 들어 이 열에 반환된 값은 "TSQL | 동적 | 낙관적 | 전역(0)".
sql_handle varbinary(64) 커서를 선언한 일괄 처리의 텍스트에 대한 핸들입니다.
statement_start_offset int 현재 실행 중인 일괄 처리 또는 저장 프로시저에서 현재 실행 중인 문이 시작되는 위치까지의 문자 수입니다. sql_handle, statement_end_offset 및 sys.dm_exec_sql_text 동적 관리 함수와 함께 사용하여 요청에 대해 현재 실행 중인 문을 검색할 수 있습니다.
statement_end_offset int 현재 실행 중인 일괄 처리 또는 현재 실행 중인 문이 종료되는 저장 프로시저의 문자 수입니다. sql_handle, statement_start_offset 및 sys.dm_exec_sql_text 동적 관리 함수와 함께 사용하여 요청에 대해 현재 실행 중인 문을 검색할 수 있습니다.
plan_generation_num bigint 다시 컴파일한 후 계획의 인스턴스를 구분하는 데 사용할 수 있는 시퀀스 번호입니다.
creation_time 날짜/시간 이 커서가 생성되었을 때의 타임스탬프입니다.
is_open bit 커서가 열려 있는지 여부를 지정합니다.
is_async_population bit 백그라운드 스레드가 여전히 KEYSET 또는 STATIC 커서를 비동기적으로 채우는지 여부를 지정합니다.
is_close_on_commit bit 커서가 CURSOR_CLOSE_ON_COMMIT을 사용하여 선언되었는지 여부를 지정합니다.

1 = 트랜잭션이 종료될 때 커서가 닫힙니다.
fetch_status int 커서의 마지막 인출 상태를 반환합니다. 마지막으로 반환된 @@FETCH_STATUS 값입니다.
fetch_buffer_size int 인출 버퍼의 크기에 대한 정보를 반환합니다.

1 = Transact-SQL 커서입니다. API 커서의 경우 더 높은 값으로 설정할 수 있습니다.
fetch_buffer_start int FAST_FORWARD 및 동적 커서의 경우 커서가 열려 있지 않거나 첫 번째 행 앞에 놓이면 0을 반환합니다. 그렇지 않으면 -1을 반환합니다.

STATIC 및 KEYSET 커서의 경우, 커서가 열려 있지 않으면 0을 반환하고 커서가 마지막 행 뒤에 있으면 -1을 반환합니다.

그렇지 않으면 위치가 지정된 행 번호를 반환합니다.
ansi_position int 페치 버퍼 내의 커서 위치입니다.
worker_time bigint 이 커서를 실행하는 작업자가 소요한 시간(마이크로초)입니다.
읽습니다 bigint 커서가 수행한 읽기 수입니다.
씁니다 bigint 커서에서 수행하는 쓰기 수입니다.
dormant_duration bigint 이 커서의 마지막 쿼리(열기 또는 인출)가 시작된 후 밀리초입니다.

사용 권한

서버에 대한 VIEW SERVER STATE 권한이 필요합니다.

SQL Server 2022 이상에 대한 사용 권한

서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.

설명

다음 표에서는 커서 선언 인터페이스에 대한 정보를 제공하고 속성 열에 사용할 수 있는 값을 포함합니다.

속성 설명
API 커서는 데이터 액세스 API(ODBC, OLEDB) 중 하나를 사용하여 선언되었습니다.
TSQL Transact-SQL DECLARE CURSOR 구문을 사용하여 커서가 선언되었습니다.

다음 표에서는 커서 형식에 대한 정보를 제공하고 속성 열에 사용할 수 있는 값을 포함합니다.

Type 설명
Keyset 커서가 키 집합으로 선언되었습니다.
동적 커서가 동적으로 선언되었습니다.
스냅샷 커서가 스냅샷 또는 정적으로 선언되었습니다.
Fast_Forward 커서가 빠른 전달 선언되었습니다.

다음 표에서는 커서 동시성에 대한 정보를 제공하고 속성 열에 사용할 수 있는 값을 포함합니다.

동시성 설명
읽기 전용 커서가 읽기 전용으로 선언되었습니다.
Scroll Locks 커서는 스크롤 잠금을 사용합니다.
낙관적인 커서는 낙관적 동시성 제어를 사용합니다.

다음 표에서는 커서 범위에 대한 정보를 제공하고 속성 열에 사용할 수 있는 값을 포함합니다.

범위 설명
로컬 커서 범위를 커서가 생성된 일괄 처리, 저장 프로시저, 트리거에 대해 로컬로 지정합니다.
전역 커서 범위를 연결에 대해 전역으로 지정합니다.

예제

A. 이전 커서 검색

다음 예에서는 지정한 36시간을 초과하여 서버에서 열려 있는 커서에 대한 정보를 반환합니다.

SELECT creation_time, cursor_id, name, c.session_id, login_name   
FROM sys.dm_exec_cursors(0) AS c   
JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id   
WHERE DATEDIFF(hh, c.creation_time, GETDATE()) > 36;  
GO  

참고 항목

동적 관리 뷰 및 함수(Transact-SQL)
실행 관련 동적 관리 뷰 및 함수(Transact-SQL)
sys.dm_exec_sessions(Transact-SQL)