JetCompact 関数
適用対象: Windows |Windows Server
JetCompact 関数
JetCompact 関数は、既存のデータベースのコピーを作成します。 コピーは、使用に最適な状態に圧縮されます。 コピーされたデータ内のデータは、インデックス作成時にインデックスに対して選択されたメジャーに従ってパックされます。 このようにして、圧縮されたデータをできるだけ高密度に格納できます。 または、圧縮されたデータは、後続のレコードの増加やインデックス挿入のために領域を確保できます。
JET_ERR JET_API JetCompact(
__in JET_SESID sesid,
__in JET_PCSTR szDatabaseSrc,
__in JET_PCSTR szDatabaseDest,
__in JET_PFNSTATUS pfnStatus,
__in_opt JET_CONVERT* pconvert,
__in JET_GRBIT grbit
);
パラメーター
sesid
この呼び出しに使用するセッション。
szDatabaseSrc
圧縮されるソース データベース。
szDatabaseDest
圧縮されたデータベースに使用する名前。
pfnStatus
データベースのコンパクトな操作を通じて定期的に呼び出して進行状況を報告できるコールバック関数。
pconvert
ソース データベースの読み取りに使用できる代替の ESE DLL を指定し、以前のバージョンから新しいバージョン形式にデータベースを変換する JetCompact 操作の省略可能なパラメーターを指定するために使用されるポインター。 この機能は、Windows Server 2003 で廃止されました。
grbit
次のオプションの 0 個以上を指定するビットのグループ。
値 |
説明 |
---|---|
JET_bitCompactRepair |
ソース データベースが破損していることが判明した場合に使用されます。 これにより、ソース データベースから可能な限り多くのデータをサルベージすることを目的とした一連の新しい動作が可能になります。 このオプションを設定した JetCompact はJET_errSuccessを返しますが、ソース データベースに作成されたすべてのデータをコピーすることはできません。 ソース データベースの破損した部分にあったデータはスキップされます。 |
JET_bitCompactStats |
JetCompact がソース データベースの統計を DFRGINFO.TXT という名前のファイルにダンプします。 統計には、ソース データベース内の各テーブルの名前、各テーブル内の行数、各テーブル内のすべての行の合計サイズ(バイト単位)、 JET_coltypLongText 型のすべての列の合計サイズ (バイト単位)、またはレコードとは別に格納できる十分な大きさの JET_coltypLongBinary 、クラスター化インデックス リーフ ページの数、 長い値のリーフ ページの数を指定します。 さらに、ソース データベースのサイズ、変換先データベース、データベース圧縮に必要な時間、一時データベース領域などの概要統計もすべてダンプされます。 |
戻り値
この関数は、次のいずれかのリターン コードを使用して 、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張可能ストレージ エンジン エラー 」および「 エラー処理パラメーター」を参照してください。
リターン コード |
説明 |
---|---|
JET_errSuccess |
操作は正常に完了しました。 |
JET_errClientRequestToStopJetService |
JetStopService の呼び出しの結果、セッションに関連付けられたインスタンス上のすべてのアクティビティが停止したため、操作を完了することはできません。 |
JET_errFeatureNotAvailable |
NULL 以外の pconvert ポインターが指定されましたが、使用されている ESE のバージョンでは変換機能はサポートされていません。 この機能は、Windows Server 2003 バージョンの ESE で削除されました。 |
JET_errInstanceUnavailable |
セッションに関連付けられているインスタンスで致命的なエラーが発生したため、操作を完了できません。このエラーでは、そのデータの整合性を保護するためにすべてのデータへのアクセスを取り消す必要があります。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errInTransaction |
呼び出し元のセッションはトランザクション内にあります。 JetCompact は、トランザクション以外のセッションによって呼び出される必要があります。 |
JET_errNotInitialized |
セッションに関連付けられているインスタンスがまだ初期化されていないため、操作を完了できません。 |
JET_errRestoreInProgress |
セッションに関連付けられているインスタンスで復元操作が進行中であるため、操作を完了できません。 |
JET_errSessionSharingViolation |
同じセッションを複数のスレッドに同時に使用することはできません。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errTermInProgress |
セッションに関連付けられているインスタンスがシャットダウンされているため、操作を完了できません。 |
成功すると、ソース データベースがコピー先データベースにコピーされます。 コピー先データベースは最適な状態です。たとえば、すべてのテーブル インデックスは隣接する論理ディスク領域に配置されます。 各インデックス ページは、インデックスが最初にソース データベースに作成されたときに構成された量に埋め込まれます。 修復オプションが指定されていない限り、すべてのデータとメタデータの設定が完全に忠実にコピーされます。 修復オプションが指定されている場合は、ソース データベースの一部のデータがコピーされていない可能性があります。
失敗した場合、コピー先データベースが存在する可能性がありますが、ソース データベースの完全なコピーではありません。
解説
データベースの圧縮は、データベースを以前のバージョン形式からより新しいバージョンにアップグレードするためにも使用されます。 省略可能なパラメーターは pconvert です。このパラメーターには、ソース データベース形式の読み取りに使用する以前のバージョンの DLL の説明を保持できる構造体が含まれています。 この機能は、Windows Server 2003 で廃止されました。 Windows Server 2003 以降では、新しいバージョンの ESE は常に古いバージョンのデータベース形式を読み取ることができるため、この機能は必要ありません。
テーブルとインデックスの作成時に、コンパクトな操作の後に必要なデータ密度を指定します。 密度は 20% から 100% の間である必要があります。 データベースが主に読み取られ、更新されていない場合、アプリケーションは密度を 100% に設定して、クエリ処理中の I/O 操作の数を減らします。 ただし、レコードと共に格納されるデータのサイズを大きくする操作でデータが頻繁に更新される場合、または新しいデータが頻繁に挿入される場合、アプリケーションは密度を低くして、更新が必要なリソースをより頻繁に見つけられるようにします。 データベースを圧縮する操作により、アプリケーションによって選択された塗りつぶしに従って、データベースが理想的にレイアウトされます。
データベース圧縮は、オフライン操作です。 データベースの使用中は実行できません。 その結果、通常は、データ セットをそれ自体の一部として提供するアプリケーションを開発するビルド プロセスの一部として行われます。
オフライン データベース圧縮は、データベース内のすべてのデータにアクセスし、データベースの整合性をチェックする手段として使用できます。 データベースが疑われる場合は、圧縮できます。 圧縮からエラーが見つからない場合は、データベースが ESE の有効な状態であることが判明します。
要件
要件 | 値 |
---|---|
Client |
Windows Vista、Windows XP、または Windows 2000 Professional が必要です。 |
[サーバー] |
Windows Server 2008、Windows Server 2003、または Windows 2000 Server が必要です。 |
Header |
Esent.h で宣言されています。 |
Library |
ESENT.lib を使用します。 |
[DLL] |
ESENT.dllが必要です。 |
Unicode |
JetCompactW (Unicode) および JetCompactA (ANSI) として実装されます。 |