다음을 통해 공유


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

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

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

또한 참조하십시오

커서를 구현하는 방법