다음을 통해 공유


OLE DB 공급자의 키 집합 커서 요구 사항

Transact-SQL 키 집합 커서는 다음 조건이 충족될 경우에만 원격 테이블을 참조할 수 있습니다.

  • 분산 쿼리는 키 집합 커서를 선언하는 DECLARE CURSOR 문에 사용된 SELECT 문의 요구 사항을 만족해야 합니다. 키 집합 커서 지원을 위한 Transact-SQL 조건에 대한 자세한 내용은 DECLARE CURSOR(Transact-SQL)를 참조하십시오.

  • 쿼리의 모든 로컬 테이블에 고유 인덱스가 있습니다. 원격 테이블의 인덱스는 IDBSchemaRowset 인터페이스의 INDEXES 행 집합을 통해 제공되어야 합니다.

OLE DB 공급자의 인덱스 요구 사항

SQL Server는 특정 쿼리를 평가하기 위해 OLE DB 공급자의 테이블에서 인덱스를 사용할 수 있습니다. SQL Server에서 인덱스를 사용하려면 공급자가 인덱스 행 집합 검색, 인덱스 열 값을 사용한 인덱스 행 집합에서의 검색, 인덱스 행 집합에서 얻은 책갈피를 사용하여 기본 테이블 행 집합에서의 행 위치 설정을 가능하게 하는 OLE DB 인터페이스를 표시해야 합니다.

OLE DB 공급자의 인덱스를 사용하는 경우 인덱스 및 테이블 행 집합이 SQL Server의 인스턴스와 같은 컴퓨터에 있을 때만 성능이 향상됩니다. 따라서 데이터 원본이 SQL Server와 같은 컴퓨터에 있을 때만 Index AS Access Path 옵션을 설정해야 합니다.

SQL Server는 다음 조건이 충족될 경우에만 OLE DB 공급자의 인덱스를 사용할 수 있습니다.

  • 공급자가 TABLES, COLUMNS, INDEXES 스키마 행 집합이 있는 IDBSchemaRowset 인터페이스를 지원해야 합니다.

  • 공급자가 인덱스 이름과 해당 기본 테이블 이름을 지정하여 IOpenRowset을 통해 인덱스의 행 집합 열기를 지원해야 합니다.

  • 인덱스 개체가 IRowset, IRowsetIndex, IAccessor, IColumnsInfo, IRowsetInfoIConvertTypes와 같은 필수 인터페이스를 모두 지원해야 합니다.

  • 인덱싱된 기본 테이블에 대해 IOpenRowset을 사용하여 열린 행 집합이 인덱스 행 집합에서 얻은 책갈피를 기반으로 기본 테이블 행에서의 위치를 지정할 수 있도록 IRowsetLocate 인터페이스를 지원해야 합니다.

OLE DB 공급자가 위의 요구 사항을 충족하면 SQL Server 관리자는 Index As Access Path 공급자 옵션을 설정해 SQL Server가 공급자의 인덱스를 사용하여 쿼리를 평가할 수 있도록 할 수 있습니다. 이 옵션이 설정되어 있지 않으면 기본적으로 SQL Server는 공급자의 인덱스를 사용하지 않습니다.

업데이트할 수 있는 키 집합 커서 요구 사항

분산 쿼리에 정의된 키 집합 커서를 통해 원격 테이블을 업데이트하거나 삭제할 수 있습니다. 예를 들면 다음과 같습니다. UPDATE | DELETE remote_table WHERE CURRENT OF cursor_name.

다음 조건에서는 분산 쿼리에 대해 업데이트할 수 있는 커서가 허용됩니다.

  • 공급자가 원격 테이블에 대한 업데이트 및 삭제 조건을 충족해야 합니다. 자세한 내용은 OLE DB 공급자를 위한 UPDATE 및 DELETE 요구 사항을 참조하십시오.

  • 모든 커서 작업은 반복 읽기 격리 수준 또는 순차 가능 격리 수준으로 명시적 사용자 트랜잭션 또는 다중 문 트랜잭션에 있어야 합니다.

공급자는 ITransactionJoin 인터페이스를 사용하여 분산 트랜잭션을 지원해야 합니다.