ESENT Managed Interfaceを用いて、JET Redのデータベースを開いたりしています。
そこでいつも問題になるのが、DatabasePageSizeです。
私の指定と、DBの仕様が一致しなければ、EsentPageSizeMismatchExceptionが発生。
ーーー
esentutl /? 等で表示される内容を参考にしますと、DatabasePageSizeの取りうる値は2048, 4096, 8192, 16384, 32768の5つが有るようです。
/2 - set 2k database page size (default: auto-detect)
/4 - set 4k database page size (default: auto-detect)
/8 - set 8k database page size (default: auto-detect)
/16 - set 16k database page size (default: auto-detect)
/32 - set 32k database page size (default: auto-detect)
ーーー
参考までに、
C:\Windows\SoftwareDistribution\DataStore\DataStore.edbは、32768
%LOCALAPPDATA%\Microsoft\Windows Live Mail\Mail.MSMessageStoreは、8192
でした。
ーーー
実際に調べる方法は、esentutl /mがお手軽です。
esentutl /m C:\Windows\SoftwareDistribution\DataStore\DataStore.edb
Extensible Storage Engine Utilities for Microsoft(R) Windows(R)
Version 6.1
Copyright (C) Microsoft Corporation. All Rights Reserved.
Initiating FILE DUMP mode...
Database: C:\Windows\SoftwareDistribution\DataStore\DataStore.edb
DATABASE HEADER:
Checksum Information:
Expected Checksum: 0x0b814322
Actual Checksum: 0x0b814322
Fields:
File Type: Database
Checksum: 0xb814322
Format ulMagic: 0x89abcdef
Engine ulMagic: 0x89abcdef
Format ulVersion: 0x620,17
Engine ulVersion: 0x620,17
Created ulVersion: 0x620,17
DB Signature: Create time:01/07/2015 11:54:17 Rand:176326398 Computer:
cbDbPage: 32768
dbtime: 219204 (0x35844)
State: Clean Shutdown
Log Required: 0-0 (0x0-0x0)
Log Committed: 0-0 (0x0-0x0)
GenMax Creation: 00/00/1900 00:00:00
Shadowed: Yes
Last Objid: 46
Scrub Dbtime: 0 (0x0)
Scrub Date: 00/00/1900 00:00:00
Repair Count: 0
Repair Date: 00/00/1900 00:00:00
Old Repair Count: 0
Last Consistent: (0x0,0,0) 01/07/2015 11:55:09
Last Attach: (0x0,0,0) 01/07/2015 11:54:17
Last Detach: (0x0,0,0) 01/07/2015 11:55:09
Dbid: 2
Log Signature: Create time:00/00/1900 00:00:00 Rand:0 Computer:
OS Version: (6.1.7601 SP 1 NLS 60101.60101)
ーーー
0 件のコメント:
コメントを投稿