SQL Server 에서 커서 를 풀 지 않 은 방법 보기
세 션 1:프로그램 이나 스 크 립 트 를 시 뮬 레이 션 합 니 다.커서 를 연 후에 커서 를 닫 거나 놓 는 것 을 잊 습 니 다.
DECLARE Cursor_Test CURSOR FORSELECT * FROM dbo.TEST;OPEN Cursor_Test;
이때 만약 우리 가 데이터베이스 에 방출 되 지 않 은 커서 를 어떻게 검사 합 니까?사실 SQL SERVER 는 동적 관리 함수 sys.dm 를 제공 합 니 다.exec_cursors,각종 데이터베이스 에서 열 린 커서 에 대한 정 보 를 되 돌려 줍 니 다.
SELECT * FROM sys.dm_exec_cursors(0)
이 동적 관리 함수 가 되 돌아 오 는 표 의 각 필드 에 대한 설명 은 MSDN 문 서 를 참고 할 수 있 습 니 다.데이터베이스 버 전에 따라 차이 가 있 습 니 다.닫 히 지 않 은 커서 를 조회 하려 면 필드 isopen 필터 링(커서 가 열 린 상태 인지 지정 합 니 다.1 은 열기,0 은 닫 기)세 션 2:닫 히 지 않 은 커서 보기
SELECT
session_id ,
cursor_id ,
name ,
creation_time ,
is_openFROM
sys.dm_exec_cursors(0)WHERE
is_open = 1;
닫 혔 지만 풀 리 지 않 은 커서 를 보 려 면 세 션 1 에서 커서 닫 기 명령 을 실행 할 수 있 습 니 다.CLOSE CursorTest;그러나 커서 를 놓 지 않 고 다음 과 같이 캡 처 합 니 다.
또 서버 에서 지 정 된 시간(1 시간)이상 열 린 커서 의 정 보 를 아래 SQL 로 확인 하고 필요 에 따라 조회 조건 을 자체 적 으로 조정 할 수 있다.
SELECT creation_time
,cursor_id
,name
,c.session_id
,login_name
,c.creation_time
,c.is_openFROM
sys.dm_exec_cursors (0) AS c
JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_idWHERE
DATEDIFF(hh, c.creation_time, GETDATE()) > 1;GO
위 에서 설명 한 것 은 소 편 이 소개 한 SQL Server 에서 커서 를 풀 지 않 은 방법 을 보 는 것 입 니 다.도움 이 되 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.