JetAttachDatabase 함수
적용 대상: Windows | Windows Server
JetAttachDatabase 함수
JetAttachDatabase 함수는 데이터베이스 instance 사용할 데이터베이스 파일을 연결합니다. 데이터베이스를 사용하려면 나중에 JetOpenDatabase를 사용하여 열어야 합니다.
JET_ERR JET_API JetAttachDatabase(
__in JET_SESID sesid,
__in const tchar* szFilename,
__in JET_GRBIT grbit
);
매개 변수
sesid
API 호출에 사용할 데이터베이스 세션 컨텍스트입니다.
szFilename
연결할 데이터베이스의 이름입니다.
grbit
다음 옵션 중 0개 이상을 지정하는 비트 그룹입니다.
값 |
의미 |
---|---|
JET_bitDbDeleteCorruptIndexes |
JET_paramEnableIndexChecking 설정된 경우 유니코드 데이터에 대한 모든 인덱스가 삭제됩니다. 자세한 내용은 설명 섹션을 참조하세요. |
JET_bitDbDeleteUnicodeIndexes |
유니코드 데이터에 대한 모든 인덱스는 JET_paramEnableIndexChecking 설정에 관계없이 삭제됩니다. 자세한 내용은 설명 섹션을 참조하세요. |
JET_bitDbUpgrade |
사용되지 않습니다. 사용하지 마십시오. |
JET_bitDbReadOnly |
데이터베이스 수정을 방지합니다. |
반환 값
이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류 및 오류 처리 매개 변수를 참조하세요.
반환 코드 |
설명 |
---|---|
JET_errSuccess |
작업이 성공적으로 완료되었습니다. |
JET_errBackupInProgress |
백업 중에는 데이터베이스를 연결할 수 없습니다. |
JET_errDatabaseFileReadOnly |
szFilename으로 지정된 데이터베이스 파일을 쓸 수 있어야 합니다. Read-Only 특성을 설정해서는 안 되며 실행 중인 프로세스에는 파일에 쓸 수 있는 충분한 권한이 있어야 합니다. |
JET_errDatabaseInUse |
데이터베이스 파일이 이미 다른 프로세스에 의해 열려 있습니다. |
JET_errDatabaseInvalidPath |
szFilename에 잘못된 경로가 지정되었습니다. szFilename 은 NULL이 아니어야 하며 유효한 경로를 참조해야 합니다. |
JET_errDatabaseSharingViolation |
데이터베이스 파일이 이미 다른 세션에 의해 연결되었습니다. |
JET_errFileAccessDenied |
데이터베이스 엔진에서 데이터베이스 파일을 열 수 없습니다. 파일이 다른 프로세스에서 사용 중이거나 호출자에게 파일을 열 수 있는 충분한 권한이 없을 수 있습니다. |
JET_errFileNotFound |
szFilename에 지정된 파일이 없습니다. |
JET_errPrimaryIndexCorrupted |
기본 인덱스 오류가 있습니다. 이는 물리적 손상(예: 디스크 또는 메모리 손상)에서 발생할 수 있습니다. 또한 이전 운영 체제에서 마지막으로 수정된 데이터베이스를 연결할 때 반환될 수 있으며 기본 인덱스는 유니코드 데이터가 있는 열 위에 있습니다. 유니코드 데이터에 대한 인덱스에 대한 자세한 내용은 설명을 참조하세요. |
JET_errSecondaryIndexCorrupted |
보조 인덱스가 있는 오류가 있습니다. 이는 물리적 손상(예: 디스크 또는 메모리 손상)에서 발생할 수 있습니다. 이전 운영 체제에서 마지막으로 수정된 데이터베이스를 연결하고 보조 인덱스가 유니코드 데이터가 있는 열 위에 있는 경우에도 반환될 수 있습니다. 유니코드 데이터에 대한 인덱스에 대한 자세한 내용은 설명을 참조하세요. 보조 인덱스는 다음 명령을 사용하여 오프라인 유틸리티로 데이터베이스를 조각 모음할 때 완전히 다시 작성됩니다. esentutl -d. |
JET_errTooManyAttachedDatabases |
instance당 한정된 수의 데이터베이스만 연결할 수 있습니다. 이 제한은 현재 instance당 7개의 데이터베이스입니다. |
JET_wrnDatabaseAttached |
데이터베이스 파일이 이 세션에서 이미 연결되어 있음을 나타내는 심각하지 않은 경고입니다. |
설명
JetAttachDatabase를 호출하는 것은 JetAttachDatabase2를 호출하고 값을 0으로 전달하는 것과 같습니다. 즉, cpgDatabaseSizeMax 매개 변수에 대한 제한이 없습니다.
쓰기 가능한 데이터베이스(즉, grbit 매개 변수에 JET_bitDbReadOnly 지정되지 않은 경우)를 연결하면 운영 체제 수준에서만 파일이 열립니다. 다른 프로세스에서 파일을 열 수 없습니다. 여러 프로세스가 단일 데이터베이스를 읽기 전용 모드로 열어 연결할 수 있습니다.
데이터베이스 파일은 JetDetachDatabase 또는 JetDetachDatabase2를 사용하여 분리됩니다.
인덱스 검사 매개 변수
다양한 버전의 Windows는 다른 방식으로 유니코드 텍스트를 정규화합니다. 즉, 한 버전의 Windows에서 빌드된 인덱스는 다른 버전에서 작동하지 않을 수 있습니다.
Windows Server 2003 이전에는 운영 체제 버전이 변경되었을 때(서비스 팩 설치 포함) 유니코드 데이터에 대한 모든 인덱스가 잠재적으로 손상되었을 수 있습니다.
Windows Server 2003 이상에서 만든 인덱스는 빌드된 유니코드 정규화 버전으로 플래그가 지정됩니다. 이전 인덱스에는 버전 정보가 없습니다. 대부분의 유니코드 정규화 변경 내용은 새 문자를 추가하는 것으로 구성되며, 이전에 정의되지 않은 코드 포인트는 이제 정의되고 다르게 정규화됩니다. 따라서 이진 데이터가 유니코드 열에 저장되면 새 코드 포인트가 정의될 때 다르게 정규화됩니다.
Windows Server 2003을 기준으로 ESE 데이터베이스 엔진은 정의되지 않은 코드 포인트가 포함된 유니코드 인덱스 항목을 추적합니다. 정의된 유니코드 문자 집합이 변경될 때 인덱스 수정에 사용할 수 있습니다.
이러한 매개 변수는 ESE 데이터베이스 엔진이 운영 체제의 다른 빌드에서 마지막으로 사용된 데이터베이스에 연결할 때 발생하는 작업을 제어합니다. 운영 체제 버전은 데이터베이스 헤더에 스탬프됩니다.
JET_paramEnableIndexCheckingTRUE로 설정되고 데이터베이스에 잠재적으로 손상된 인덱스가 포함된 경우:
grbit에 JET_bitDbDeleteCorruptIndexes 포함된 경우 JetAttachDatabase는 잠재적으로 손상된 인덱스를 삭제합니다.
grbit에 JET_bitDbDeleteCorruptIndexes 포함되어 있지 않고 삭제가 필요한 인덱스가 있는 경우 JetAttachDatabase에서 오류를 반환합니다.
JET_paramEnableIndexCheckingFALSE로 설정된 경우:
- JetAttachDatabase 는 잠재적으로 손상된 인덱스를 무시하고 JET_errSuccess 반환합니다(다른 오류가 없다고 가정).
Windows Server 2003 이상: JET_paramEnableIndexChecking 다시 설정되지 않은 경우 내부 픽스업 테이블을 사용하여 인덱스 항목을 수정합니다. 이렇게 하면 모든 인덱스 손상이 해결되지는 않지만 애플리케이션에 투명하게 적용됩니다.
데이터베이스가 읽기 전용으로 연결된 경우 인덱스가 수정되거나 삭제될 수 없습니다. 이 경우 API는 대신 JET_errSecondaryIndexCorrupted 또는 JET_errPrimaryIndexCorrupted 같은 오류를 반환합니다.
요구 사항
요구 사항 | 값 |
---|---|
클라이언트 |
Windows Vista, Windows XP 또는 Windows 2000 Professional이 필요합니다. |
서버 |
Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다. |
머리글 |
Esent.h에서 선언되었습니다. |
라이브러리 |
ESENT.lib를 사용합니다. |
DLL |
ESENT.dll 필요합니다. |
유니코드 |
JetAddColumnW(유니코드) 및 JetAddColumnA(ANSI)로 구현됩니다. |
참고 항목
확장 가능한 스토리지 엔진 파일
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetAttachDatabase2
JetCreateDatabase
JetDetachDatabase
JetDetachDatabase2
JetOpenDatabase
JetSetSystemParameter