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
시스템 매개 변수