적용 대상: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 | 이 커서의 마지막 쿼리(열기 또는 인출)가 시작된 후 밀리초입니다. |
사용 권한
서버에 대한 SERVER STATE 권한이 필요합니다 VIEW .
SQL Server 2022 이상에 대한 사용 권한
서버에 대한 SERVER PERFORMANCE STATE 권한이 필요합니다 VIEW .
설명
다음 표에서는 커서 선언 인터페이스에 대한 정보를 제공하고 속성 열에 사용할 수 있는 값을 포함합니다.
| 속성 | 설명 |
|---|---|
| API | 커서는 데이터 액세스 API(ODBC, OLEDB) 중 하나를 사용하여 선언되었습니다. |
| TSQL | Transact-SQL DECLARE CURSOR 구문을 사용하여 커서가 선언되었습니다. |
다음 표에서는 커서 형식에 대한 정보를 제공하고 속성 열에 사용할 수 있는 값을 포함합니다.
| Type | 설명 |
|---|---|
| Keyset | 커서가 키 집합으로 선언되었습니다. |
| 동적 | 커서가 동적으로 선언되었습니다. |
| 스냅샷 | 커서가 스냅샷 또는 정적으로 선언되었습니다. |
| Fast_Forward | 커서가 빠른 전달 선언되었습니다. |
다음 표에서는 커서 동시성에 대한 정보를 제공하고 속성 열에 사용할 수 있는 값을 포함합니다.
| 동시성 | 설명 |
|---|---|
| 읽기 전용 | 커서가 읽기 전용으로 선언되었습니다. |
| 스크롤 락 | 커서는 스크롤 잠금을 사용합니다. |
| 낙관적인 | 커서는 낙관적 동시성 제어를 사용합니다. |
다음 표에서는 커서 범위에 대한 정보를 제공하고 속성 열에 사용할 수 있는 값을 포함합니다.
| 범위 | 설명 |
|---|---|
| 로컬 | 커서 범위를 커서가 생성된 일괄 처리, 저장 프로시저, 트리거에 대해 로컬로 지정합니다. |
| 전역 | 커서 범위를 연결에 대해 전역으로 지정합니다. |
예제
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)