OLE DB용 Microsoft 커서 서비스 개요

OLE DB용 Microsoft 커서 서비스는 데이터 공급자의 커서 지원 기능을 보완합니다. 따라서 사용자는 모든 데이터 공급자의 기능을 비교적 균일하게 인식합니다.

커서 서비스를 통해 동적 속성을 사용할 수 있고 특정 메서드의 동작이 향상됩니다. 예를 들어 Optimize 동적 속성을 사용하면 Find 메서드와 같은 특정 작업이 용이하도록 임시 인덱스를 만들 수 있습니다.

커서 서비스를 사용하면 모든 경우에 일괄 업데이트를 지원할 수 있습니다. 또한 데이터 공급자가 정적 커서와 같이 덜 기능적인 커서만 제공할 수 있는 경우 동적 커서와 같은 더 기능적인 커서 형식을 시뮬레이션합니다.

키워드

이 서비스 구성 요소를 호출하려면 Recordset 또는 Connection 개체의 CursorLocation 속성을 adUseClient로 설정합니다.

connection.CursorLocation=adUseClient
recordset.CursorLocation=adUseClient

동적 속성

OLE DB용 커서 서비스를 호출하면 Recordset 개체의 Properties 컬렉션에 다음과 같은 동적 속성이 추가됩니다. ConnectionRecordset 개체 동적 속성의 전체 목록이 ADO 동적 속성 인덱스에 나열됩니다. 연결된 OLE DB 속성 이름(해당하는 경우)은 ADO 속성 이름 뒤의 괄호에 포함됩니다.

커서 서비스가 호출된 후에는 일부 동적 속성에 대한 변경 내용이 기본 데이터 원본에 표시되지 않습니다. 예를 들어 레코드 집합에서 Command Time out 속성을 설정하면 기본 데이터 공급자에 표시되지 않습니다.


Recordset1.CursorLocation = adUseClient     'invokes cursor service
Recordset1.Open "authors", _
    "Provider=SQLOLEDB;Data Source=DBServer;User Id=MyUserID;" & _
    "Password=MyPassword;Initial Catalog=pubs;",,adCmdTable
Recordset1.Properties.Item("Command Time out") = 50
' 'Command Time out' property on DBServer is still default (30).

애플리케이션에 커서 서비스가 필요하지만 기본 공급자에서 동적 속성을 설정해야 하는 경우 커서 서비스를 호출하기 전에 속성을 설정합니다. 명령 개체 속성 설정은 커서 위치에 관계없이 항상 기본 데이터 공급자에 전달됩니다. 따라서 언제든지 명령 개체를 사용하여 속성을 설정할 수도 있습니다.

참고 항목

동적 속성 DBPROP_SERVERDATAONINSERT는 기본 데이터 공급자에서 지원되는 경우에도 커서 서비스에서 지원되지 않습니다.

속성 이름 설명
Auto Recalc(DBPROP_ADC_AUTORECALC) 데이터 셰이핑 서비스를 사용하여 만든 레코드 집합의 경우 이 값은 계산 및 집계 열이 계산되는 빈도를 나타냅니다. 기본값(value=1)을 지정하면 데이터 셰이핑 서비스가 값이 변경된 것으로 판단할 때마다 다시 계산합니다. 값이 0이면 계층 구조가 처음 빌드된 경우에만 계산 열 또는 집계 열이 계산됩니다.
Batch Size(DBPROP_ADC_BATCHSIZE) 데이터 저장소로 전송하기 전에 일괄 처리할 수 있는 업데이트 문의 수를 나타냅니다. 일괄 처리에 문이 많을수록 데이터 저장소로의 왕복이 줄어듭니다.
Cache Child Rows(DBPROP_ADC_CACHECHILDROWS) 데이터 셰이핑 서비스를 사용하여 만든 레코드 집합의 경우 이 값은 자식 레코드 집합이 나중에 사용할 수 있도록 캐시에 저장되는지 여부를 나타냅니다.
Cursor Engine Version(DBPROP_ADC_CEVER) 사용 중인 커서 서비스의 버전을 나타냅니다.
Maintain Change Status(DBPROP_ADC_MAINTAINCHANGESTATUS) 여러 테이블 조인에서 하나 이상의 행을 다시 동기화하는 데 사용되는 명령의 텍스트를 나타냅니다.
Optimize 인덱스를 사용할지 여부를 나타냅니다. True로 설정하면 특정 작업의 실행을 개선하기 위해 인덱스를 임시로 만들 수 있는 권한을 부여합니다.
Reshape Name 레코드 집합의 이름을 나타냅니다. 현재 또는 후속 데이터 셰이핑 명령 내에서 참조할 수 있습니다.
Resync Command Unique Table 속성이 적용될 때 Resync 메서드에서 사용하는 사용자 지정 명령 문자열을 나타냅니다.
Unique Catalog Unique Table 속성에서 참조되는 테이블이 포함된 데이터베이스의 이름을 나타냅니다.
Unique Schema Unique Table 속성에서 참조되는 테이블의 소유자 이름을 나타냅니다.
Unique Table 삽입, 업데이트 또는 삭제로 수정할 수 있는 여러 테이블에서 만든 레코드 집합 내 한 테이블의 이름을 나타냅니다.
Update Criteria(DBPROP_ADC_UPDATECRITERIA) 업데이트 중에 발생하는 충돌을 처리하는 데 사용되는 WHERE 절의 필드를 나타냅니다.
Update Resync(DBPROP_ADC_UPDATERESYNC) Unique Table 속성이 적용될 때 UpdateBatch 메서드(및 해당 동작) 후에 Resync 메서드가 암시적으로 호출되는지 여부를 나타냅니다.

해당 이름을 Properties 컬렉션에 대한 인덱스로 지정하여 동적 속성을 설정하거나 검색할 수도 있습니다. 예를 들어 Optimize 동적 속성의 현재 값을 가져와 출력한 다음 다음과 같이 새 값을 설정합니다.

Debug.Print rs.Properties("Optimize")
rs.Properties("Optimize") = True

기본 제공 속성 동작

OLE DB용 커서 서비스는 특정 기본 제공 속성의 동작에도 영향을 줍니다.

속성 이름 설명
CursorType 레코드 집합에 사용할 수 있는 커서 유형을 보완합니다.
LockType 레코드 집합에 사용할 수 있는 잠금 유형을 보완합니다. 일괄 업데이트를 사용하도록 설정합니다.
Sort 레코드 집합이 정렬되는 필드 이름 하나 이상과 각 필드가 오름차순 또는 내림차순으로 정렬되는지 여부를 지정합니다.

메서드 동작

OLE DB용 커서 서비스는 Field 개체의 Append 메서드 및 Recordset 개체의 Open, Resync, UpdateBatchSave 메서드를 사용하도록 설정하거나 해당 동작에 영향을 미칩니다.