다음을 통해 공유


SQL Server 기본 결과 집합 사용

기본 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 문에 사용할 수 있으며 전체 결과 집합을 클라이언트로 전송하는 가장 효율적인 방법입니다.

2005년 SQL Server MARS(여러 활성 결과 집합)에 대한 지원이 도입되었습니다. 이제 애플리케이션은 연결당 둘 이상의 활성 기본 결과 집합을 가질 수 있습니다. MARS 기능은 기본적으로 해제됩니다.

2005년 SQL Server 이전에는 기본 결과 집합이 동일한 연결에서 여러 활성 문을 지원하지 않았습니다. 따라서 연결에서 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."  

참고 항목

커서 구현 방법