JetCompact 関数

適用対象: Windows | Windowsサーバー

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 エラーの詳細については、「 Extensible Storage Engine Errors 」および「エラー処理パラメーター 」を参照してください

リターン コード

説明

JET_errSuccess

操作は正常に完了しました。

JET_errClientRequestToStopJetService

JetStopServiceの呼び出しの結果、セッションに関連付けられているインスタンスのすべてのアクティビティが停止したため、操作を完了できません。

JET_errFeatureNotAvailable

NULL 以外の pconvert ポインターが指定されましたが、使用されている ESE のバージョンでは変換機能がサポートされていません。 この機能は、Windows Server 2003 バージョンの ESE で削除されました。

JET_errInstanceUnavailable

セッションに関連付けられているインスタンスで致命的なエラーが発生し、そのデータの整合性を保護するためにすべてのデータへのアクセスを取り消す必要があるという致命的なエラーが発生したため、操作を完了できません。 このエラーは、XP 以降のWindowsによってのみ返されます。

JET_errInTransaction

呼び出し元のセッションはトランザクション内です。 JetCompact は 、トランザクションの外部のセッションによって呼び出される必要があります。

JET_errNotInitialized

セッションに関連付けられているインスタンスがまだ初期化されていないので、操作を完了できません。

JET_errRestoreInProgress

セッションに関連付けられているインスタンスで復元操作が進行中のため、操作を完了できません。

JET_errSessionSharingViolation

同じセッションを複数のスレッドに同時に使用することはできません。

このエラーは、XP 以降のWindowsによってのみ返されます。

JET_errTermInProgress

セッションに関連付けられているインスタンスがシャットダウン中のため、操作を完了できません。

成功すると、ソース データベースがコピー先データベースにコピーされます。 変換先データベースは最適な状態です。たとえば、すべてのテーブル インデックスは隣接する論理ディスク領域に配置されます。 各インデックス ページは、インデックスが最初にソース データベースに作成されたときに構成された量に埋め込まれます。 修復オプションが指定されていない限り、すべてのデータとメタデータの設定が完全に忠実にコピーされます。 repair オプションを指定した場合、ソース データベースの一部のデータがコピーされていない可能性があります。

障害が発生した場合、転送先データベースは存在する可能性がありますが、ソース データベースの完全なコピーではありません。

解説

データベースの圧縮は、データベースを以前のバージョン形式からより最新のバージョンにアップグレードするためにも使用されます。 省略可能なパラメーターは pconvert です。このパラメーターには、ソース データベース形式の読み取りに使用する以前のバージョンの DLL の説明を保持できる 構造体が含まれています。 この機能は、Windows Server 2003 で廃止されました。 Windows Server 2003 以降では、新しいバージョンの ESE は常に古いバージョンのデータベース形式を読み取り可能であるため、この機能は必要ありません。

コンパクト操作後のデータの必要な密度は、テーブルとインデックスの作成時に指定します。 密度は 20% から 100% の間である必要があります。 データベースが主に読み取りで更新されない場合、アプリケーションは密度を 100% に設定して、クエリ処理中の I/O 操作の数を減らします。 ただし、レコードと共に格納されるデータのサイズを増やす操作でデータが頻繁に更新される場合、または新しいデータが頻繁に挿入される場合は、更新プログラムで使用可能な必要なリソースが見つけ出される頻度を高くするために、より低い密度がアプリケーションによって選択されます。 データベースを圧縮する操作により、アプリケーションによって選択された塗りつぶしに従ってデータベースがレイアウトされるのが理想的です。

データベース圧縮は、オフライン操作です。 データベースの実行中は実行できません。 その結果、通常は、それ自体の一部としてデータ セットを提供するアプリケーションを開発するビルド プロセスの一部として行われます。

オフライン データベース圧縮は、データベース内のすべてのビットのデータに触れ、データベースの整合性をチェックする手段として使用できます。 データベースが問題の可能性がある場合は、圧縮できます。 圧縮によってエラーが見つからない場合は、データベースが ESE の有効な状態にあると判明します。

必要条件

要件

Client

Vista、Windows XP、Windows 2000 Windowsが必要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