암시적 커서 변환 사용
응용 프로그램에서 커서 유형을 요청한 다음 요청한 유형의 서버 커서에서 지원하지 않는 Transact-SQL 문을 실행할 수 있습니다. MicrosoftSQL Server는 커서 유형이 변경되었음을 나타내는 오류를 반환합니다. 이를 암시적 커서 변환이라고 하며 경우에 따라 커서 수준 내리기(cursor degradation)라고도 합니다.
다음은 SQL Server가 암시적 커서 유형 변환을 시작하는 요인입니다.
단계 |
변환 원인 |
정방향 전용 |
키 집합 |
동적 |
다음 단계 |
---|---|---|---|---|---|
1 |
쿼리 FROM 절이 테이블을 참조하지 않을 때 |
정적 |
정적 |
정적 |
완료 |
2 |
쿼리에서 다음을 포함할 때: GROUP BY UNION DISTINCT HAVING 집계 SELECT 목록 |
정적 |
정적 |
정적 |
완료 |
3 |
쿼리가 내부 작업 테이블을 생성할 때(예: ORDER BY의 열이 인덱스에 의해 변환되지 않을 때) |
키 집합 |
|
키 집합 |
5 |
4 |
쿼리가 연결된 서버의 원격 테이블을 참조할 때 |
키 집합 |
|
키 집합 |
5 |
5 |
쿼리가 고유 인덱스 없이 하나 이상의 테이블을 참조할 때(Transact-SQL 커서에만 해당) |
|
정적 |
|
완료 |
[!참고]
빠른 정방향 전용 커서는 변환되지 않습니다.
[!참고]
키 집합과 동적 커서는 기본 테이블에 고유 인덱스가 없거나 쿼리가 기본 테이블의 키 열을 직접 반환하지 않는 경우에만 변환됩니다. 예를 들어 쿼리에 집계 함수나 집합 연산자가 포함되는 경우가 이에 해당됩니다.