다음을 통해 공유


JetOpenTempTable2 함수

적용 대상: Windows | Windows Server

JetOpenTempTable2 함수

JetOpenTempTable2 함수는 JetCreateTableColumnIndex를 사용하여 만든 일반 테이블처럼 레코드를 저장하고 검색하는 데 사용할 수 있는 단일 인덱스가 있는 임시 테이블을 만듭니다. 이 함수에는 임시 테이블의 유니코드 키 열 데이터를 비교하는 데 사용할 수 있는 로캘 ID도 있습니다. 그러나 임시 테이블은 휘발성 특성으로 인해 일반 테이블보다 훨씬 빠릅니다. 순수하게 순차적으로 액세스할 때 레코드 집합에서 중복 제거를 매우 빠르게 정렬하고 수행하는 데 사용할 수도 있습니다.

    JET_ERR JET_API JetOpenTempTable2(
      __in          JET_SESID sesid,
      __in          const JET_COLUMNDEF* prgcolumndef,
      __in          unsigned long ccolumn,
      __in          unsigned long lcid,
      __in          JET_GRBIT grbit,
      __out         JET_TABLEID* ptableid,
      __out         JET_COLUMNID* prgcolumnid
    );

매개 변수

sesid

사용할 세션입니다.

prgcolumndef

임시 테이블에서 만들 열의 열 정의입니다.

임시 테이블과 함께 사용되는 열 정의 옵션에 대한 중요한 제한 사항이 있습니다. 자세한 내용은 설명 부분을 참조하세요.

일반적인 열 정의 옵션 외에도 임시 테이블의 컨텍스트에서만 관련된 다음 옵션 중 0개 이상을 지정할 수 있습니다.

의미

JET_bitColumnTTDescending

임시 테이블에 대한 키 열의 정렬 순서는 오름차순이 아니라 내림차순이어야 합니다. 이 옵션을 JET_bitColumnTTKey 없이 지정하면 이 옵션은 무시됩니다.

JET_bitColumnTTKey

열은 임시 테이블의 키 열이 됩니다.

입력 배열에 지정된 이 옵션을 사용하는 열 정의의 순서에 따라 임시 테이블에 대한 각 키 열의 우선 순위가 결정됩니다. 이 옵션 집합이 있는 배열의 첫 번째 열 정의는 가장 중요한 키 열이 됩니다. 데이터베이스 엔진에서 지원될 수 있는 것보다 더 많은 키 열이 요청되면 지원되지 않는 키 열에 대해 이 옵션이 무시됩니다.

ccolumn

prgcolumndef를 참조하세요.

lcid

임시 테이블의 유니코드 키 열 데이터를 비교하는 데 사용할 로캘 ID입니다.

컴퓨터에 적절한 언어 팩이 설치되어 있는 한 모든 로캘을 사용할 수 있습니다. 한 가지 예외는 언어 중립 로캘(LCID 0)이 잘못되었다는 것입니다.

Windows Server 2003 이상에서 이 매개 변수에 대해 Language Neutral 로캘을 지정하면 기본 로캘 ID(미국 영어)가 대신 사용됩니다. 이는 값이 0이 잘못된 값이 아닌 기본값을 나타내도록 하기 위한 것입니다.

이 매개 변수가 없는 경우 pidxunicode 매개 변수가 없으면 기본 LCID를 사용하여 임시 테이블의 유니코드 키 열 데이터를 비교합니다. 기본 LCID는 미국 영어 로캘입니다.

grbit

다음 중 0개 이상을 포함하는 이 호출에 사용할 옵션이 포함된 비트 그룹입니다.

의미

JET_bitTTErrorOnDuplicateInsertion

이 옵션은 이전에 삽입한 레코드와 동일한 인덱스 키를 사용하여 레코드를 삽입하려고 하면 JET_errKeyDuplicate 즉시 실패하도록 요청합니다. 이 옵션을 요청하지 않으면 중복이 즉시 검색되어 실패하거나 요청된 기능에 따라 임시 테이블을 구현하기 위해 데이터베이스 엔진에서 선택한 전략에 따라 나중에 자동으로 제거될 수 있습니다.

이 기능이 필요하지 않은 경우 요청하지 않는 것이 가장 좋습니다. 이 기능이 요청되지 않은 경우 임시 테이블 관리자는 성능이 향상되는 임시 테이블을 관리하기 위한 전략을 선택할 수 있습니다.

JET_bitTTForceMaterialization

이 옵션은 임시 테이블 관리자가 성능 향상을 초래하는 임시 테이블을 관리하기 위한 영리한 전략을 선택하려는 시도를 중단하도록 강제합니다.

JET_bitTTForwardOnly

이 옵션은 임시 테이블 관리자가 중간 쿼리 결과에 최적화된 구현을 사용할 수 있는 경우에만 임시 테이블을 만들 것을 요청합니다. 임시 테이블의 특성으로 인해 이 최적화를 사용할 수 없는 경우 JET_errCannotMaterializeForwardOnlySort 작업이 실패합니다.

이 옵션의 부작용은 임시 테이블에 중복 인덱스 키가 있는 레코드를 포함할 수 있도록 하는 것입니다. 자세한 내용은 JET_bitTTUnique 참조하세요.

이 옵션은 Windows Server 2003 이상 릴리스에서만 사용할 수 있습니다.

JET_bitTTIndexed

이 옵션은 임시 테이블이 JetSeek 을 사용하여 인덱스 키로 레코드를 조회할 수 있을 만큼 유연하도록 요청합니다.

이 기능이 필요하지 않은 경우 요청하지 않는 것이 가장 좋습니다. 이 기능이 요청되지 않은 경우 임시 테이블 관리자는 성능이 향상되는 임시 테이블을 관리하기 위한 전략을 선택할 수 있습니다.

JET_bitTTScrollable

이 옵션은 임시 테이블이 JetMove를 사용하여 임의 순서 및 방향으로 레코드를 검사할 수 있을 만큼 유연하도록 요청합니다.

이 기능이 필요하지 않은 경우 요청하지 않는 것이 가장 좋습니다. 이 기능이 요청되지 않은 경우 임시 테이블 관리자는 성능이 향상되는 임시 테이블을 관리하기 위한 전략을 선택할 수 있습니다.

JET_bitTTSortNullsHigh

이 옵션은 NULL 키 열 값이 NULL이 아닌 키 열 값보다 인덱스 끝에 더 가깝게 정렬되도록 요청합니다.

JET_bitTTUnique

이 옵션은 중복 인덱스 키가 있는 레코드를 임시 테이블의 마지막 레코드 집합에서 제거하도록 요청합니다.

Windows Server 2003 이전의 데이터베이스 엔진은 모든 클러스터형 인덱스도 기본 키여야 하므로 고유해야 하므로 항상 이 옵션이 적용되었다고 가정했습니다. 이제 Windows Server 2003을 기준으로 JET_bitTTForwardOnly 옵션을 지정할 때 중복 항목을 제거하지 않는 임시 테이블을 만들 수 있습니다.

어떤 중복이 이길지, 어떤 중복이 일반적으로 삭제될지는 알 수 없습니다. 그러나 JET_bitTTErrorOnDuplicateInsertion 옵션이 요청되면 임시 테이블에 삽입할 지정된 인덱스 키가 있는 첫 번째 레코드가 항상 승리합니다.

JET_bitTTUpdatable

이 옵션은 임시 테이블이 이전에 삽입된 레코드를 나중에 변경할 수 있을 만큼 유연하도록 요청합니다. 이 기능이 필요하지 않은 경우 요청하지 않는 것이 가장 좋습니다.

이 기능이 요청되지 않은 경우 임시 테이블 관리자는 성능이 향상되는 임시 테이블을 관리하기 위한 전략을 선택할 수 있습니다.

JET_bitTTIntrinsicLVsOnly

내장 long 값만 허용하도록 요청합니다.

Windows 7: JET_bitTTIntrinsicLVsOnly Windows 7에 도입되었습니다.

ptableid

새로 만든 임시 테이블에서 열린 새 커서를 받을 출력 버퍼입니다.

prgcolumnid

임시 테이블을 만드는 동안 생성된 열 ID의 배열을 수신할 출력 버퍼입니다.

이 배열의 열 ID는 열 정의의 입력 배열과 정확히 일치합니다. 따라서 이 버퍼의 크기는 입력 배열의 크기에 해당해야 합니다.

반환 값

이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류오류 처리 매개 변수를 참조하세요.

반환 코드

설명

JET_errSuccess

작업이 성공적으로 완료되었습니다.

JET_errCannotMaterializeForwardOnlySort

JetOpenTempTable2 는 JET_bitTTForwardOnly 지정되었고 지정된 임시 테이블을 정방향 전용 최적화를 사용하여 만들 수 없으므로 실패했습니다. 이 오류는 Windows Server 2003 이상 릴리스에서만 반환됩니다.

JET_errClientRequestToStopJetService

JetStopService 호출로 인해 세션과 연결된 instance 모든 작업이 중단되었으므로 작업을 완료할 수 없습니다.

JET_errInstanceUnavailable

세션과 연결된 instance 해당 데이터의 무결성을 보호하기 위해 모든 데이터에 대한 액세스를 해지해야 하는 심각한 오류가 발생하여 작업을 완료할 수 없습니다. 이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errInvalidCodePage

JET_COLUMNDEF cp 필드가 유효한 코드 페이지로 설정되지 않았습니다. 텍스트 열에 유효한 값은 영어(1252) 및 유니코드(1200)뿐입니다. 값이 0이면 기본값이 사용됩니다(영어, 1252).

JET_errInvalidColumnType

JET_COLUMNDEFcoltyp 필드가 유효한 열 형식으로 설정되지 않았습니다.

JET_errIndexInvalidDef

잘못된 인덱스 정의가 지정되어 인덱스 를 만들 수 없습니다.

JetOpenTempTable2 는 다음과 같은 경우 이 오류를 반환합니다.

  • 언어 중립 로캘이 지정됩니다.

  • 잘못된 정규화 플래그 집합이 지정되었습니다.

이 오류는 Windows 2000에서만 반환됩니다.

JET_errInvalidLanguageId

잘못된 로캘 ID를 사용하려고 했기 때문에 인덱을 만들 수 없습니다. 로캘 ID가 완전히 잘못되었거나 연결된 언어 팩이 설치되지 않을 수 있습니다.

JET_errInvalidLCMapStringFlags

잘못된 정규화 플래그 집합을 사용하려고 했기 때문에 인덱스 를 만들 수 없습니다. 이 오류는 Windows XP 이상 릴리스에서만 반환됩니다. Windows 2000에서 정규화 플래그가 잘못되면 대신 JET_errIndexInvalidDef 발생합니다.

JET_errNotInitialized

세션과 연결된 instance 아직 초기화되지 않았기 때문에 작업을 완료할 수 없습니다.

JET_errOutOfCursors

엔진에서 새 커서를 여는 데 필요한 리소스를 할당할 수 없으므로 작업이 실패했습니다. 커서 리소스는 JET_paramMaxCursorsJetSetSystemParameter를 사용하여 구성됩니다.

JET_errOutOfMemory

완료할 메모리가 부족하여 작업이 실패했습니다.

JetOpenTempTable2 는 호스트 프로세스의 주소 공간이 너무 조각화되면 JET_errOutOfMemory 반환할 수 있습니다. 임시 테이블 관리자는 저장되는 데이터의 양에 관계없이 생성된 모든 임시 테이블에 대해 항상 1MB의 주소 공간을 할당합니다.

JET_errRestoreInProgress

세션과 연결된 instance 복원 작업이 진행 중이므로 작업을 완료할 수 없습니다.

JET_errSessionSharingViolation

두 개 이상의 스레드에 대해 동시에 동일한 세션을 사용할 수 없습니다.

이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errTermInProgress

세션과 연결된 instance 종료 중이므로 작업을 완료할 수 없습니다.

JET_errTooManyColumns

테이블에 너무 많은 열을 추가하려고 했습니다. 테이블에는 고정 열이 JET_ccolFixedMost 이상, 가변 길이 열이 JET_ccolVarMost 이상, 태그가 지정된 열이 JET_ccolTaggedMost 수 없습니다.

JET_errTooManyOpenIndexes

엔진이 테이블의 인덱스를 캐시하는 데 필요한 리소스를 할당할 수 없기 때문에 작업이 실패했습니다. 스키마를 캐시할 수 있는 인덱스의 수는 JET_paramMaxOpenTables JetSetSystemParameter를 사용하여 구성됩니다.

JET_errTooManyOpenTables

엔진이 테이블의 스키마를 캐시하는 데 필요한 리소스를 할당할 수 없기 때문에 작업이 실패했습니다. 스키마를 캐시할 수 있는 테이블 수는 JET_paramMaxOpenTables JetSetSystemParameter를 사용하여 구성됩니다.

JET_errTooManySorts

엔진이 임시 테이블을 만드는 데 필요한 리소스를 할당할 수 없기 때문에 작업이 실패했습니다. 임시 테이블 리소스는 JET_paramMaxTemporaryTablesJetSetSystemParameter를 사용하여 구성됩니다.

성공하면 새로 만든 임시 테이블에서 열린 커서가 반환됩니다. 임시 데이터베이스의 상태는 새 임시 테이블을 포함하도록 준비됩니다. 데이터베이스 엔진에서 사용 중인 일반 데이터베이스의 상태는 변경되지 않은 상태로 유지됩니다.

실패 시 임시 테이블이 만들어지지 않고 커서가 반환되지 않습니다. 임시 데이터베이스의 상태가 변경될 수 있습니다. 데이터베이스 엔진에서 사용 중인 일반 데이터베이스의 상태는 변경되지 않은 상태로 유지됩니다.

설명

JetOpenTempTable을 참조하세요.

요구 사항

요구 사항

클라이언트

Windows Vista, Windows XP 또는 Windows 2000 Professional이 필요합니다.

서버

Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다.

머리글

Esent.h에서 선언되었습니다.

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

참고 항목

JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetRollback
JetSeek
JetSetSystemParameter
시스템 매개 변수