SQL Server 기본 결과 집합 사용

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

기본 ODBC 커서 특성은 다음과 같습니다.

SQLSetStmtAttr(hstmt, SQL_ATTR_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY, SQL_IS_INTEGER);  
SQLSetStmtAttr(hstmt, SQL_ATTR_CONCURRENCY, SQL_CONCUR_READ_ONLY, SQL_IS_INTEGER);  
SQLSetStmtAttr(hstmt, SQL_ATTR_ROW_ARRAY_SIZE, 1, SQL_IS_INTEGER);  

이러한 특성이 기본값으로 설정될 때마다 SQL Server Native Client ODBC 드라이버는 SQL Server 기본 결과 집합을 사용합니다. 기본 결과 집합은 SQL Server에서 지원하는 모든 SQL 문에 사용할 수 있으며 전체 결과 집합을 클라이언트로 전송하는 가장 효율적인 방법입니다.

SQL Server 2005(9.x)는 MARS(여러 활성 결과 집합)에 대한 지원을 도입했습니다. 이제 애플리케이션은 연결당 둘 이상의 활성 기본 결과 집합을 가질 수 있습니다. MARS는 기본적으로 사용하도록 설정되지 않습니다.

SQL Server 2005(9.x) 이전에는 기본 결과 집합이 동일한 연결에서 여러 활성 문을 지원하지 않았습니다. 연결에서 SQL 문을 실행한 후 서버는 결과 집합의 모든 행이 처리될 때까지 해당 연결의 클라이언트에서 명령(결과 집합의 나머지 부분을 취소하는 요청 제외)을 수락하지 않습니다. 부분적으로 처리된 결과 집합의 나머지 부분을 취소하려면 fOption 매개 변수가 SQL_CLOSE 설정된 SQLCloseCursor 또는 SQLFreeStmt 를 호출합니다. 부분적으로 처리된 결과 집합을 완료하고 다른 결과 집합이 있는지 테스트하려면 SQLMoreResults를 호출 합니다. 기본 결과 집합이 완전히 처리되기 전에 ODBC 애플리케이션이 연결 핸들에서 명령을 시도하는 경우 호출은 SQL_ERROR 생성하고 SQLGetDiagRec에 대한 호출은 다음을 반환합니다.

szSqlState: "HY000", pfNativeError: 0  
szErrorMsg: "[Microsoft][SQL Server Native Client]  
                Connection is busy with results for another hstmt."  

참고 항목

커서를 구현하는 방법