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)