次の方法で共有


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) として実装されます。

参照

JET_COLTYP
JET_ERR
JET_SESID
JetDefragment
JetStopService