JetAttachDatabase2 関数

適用対象: Windows |Windows Server

JetAttachDatabase2 関数

JetAttachDatabase2 関数は、データベース インスタンスで使用するデータベース ファイルをアタッチし、そのデータベースの最大サイズを指定します。 データベースを使用するには、その後 JetOpenDatabase でデータベースを開く必要があります。

    JET_ERR JET_API JetAttachDatabase2(
      __in          JET_SESID sesid,
      __in          const tchar* szFilename,
      __in          const unsigned long cpgDatabaseSizeMax,
      __in          JET_GRBIT grbit
    );

パラメーター

sesid

API 呼び出しに使用されるデータベース セッション コンテキスト。

szFilename

アタッチするデータベースの名前。

cpgDatabaseSizeMax

データベース の最大サイズ (データベース ページ)。 既定のデータベース ページ サイズは 4 KB です。これは、データベースを作成する前に JetSetSystemParameter 関数を使用して変更できます。

0 を渡すと、データベース エンジンによって適用される最大値がないことを意味します。

grbit

この呼び出しに使用するオプションを含むビットのグループ。これには、次の 0 個以上が含まれます。

説明

JET_bitDbDeleteCorruptIndexes

JET_paramEnableIndexCheckingが設定されている場合、Unicode データに対するすべてのインデックスが削除されます。 詳細については、「解説」を参照してください。

JET_bitDbDeleteUnicodeIndexes

Unicode データに対するすべてのインデックスは、 JET_paramEnableIndexCheckingの設定に関係なく削除されます。 詳細については、「解説」を参照してください。

JET_bitDbReadOnly

データベースの変更を防止します。

JET_bitDbUpgrade

将来利用するために予約されています。

戻り値

関数は、 JET_ERR エラー コードのいずれかを返します。 最も一般的に返されるのは次のとおりです。 (この API のエラーの完全な一覧については、「 Extensible Storage Engine Error Codes」を参照してください)。

リターン コード

説明

JET_errSuccess

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

JET_errBackupInProgress

バックアップ中にデータベースをアタッチすることはできません。

JET_errDatabaseFileReadOnly

szFilename で指定されたデータベース ファイルは書き込み可能である必要があります。 Read-Only属性を設定しないでください。また、実行中のプロセスには、ファイルに書き込むのに十分な権限が必要です。

JET_errDatabaseInUse

データベース ファイルは、別のプロセスによって既に開かれています。

JET_errDatabaseInvalidPath

szFilename に無効なパスが指定されました。 szFilename は NULL 以外で、有効なパスを参照する必要があります。

JET_errDatabaseSharingViolation

データベース ファイルは既に別のセッションによってアタッチされています。

JET_errFileNotFound

szFilename に指定されたファイルが存在しません。

JET_errPrimaryIndexCorrupted

プライマリ インデックスにエラーがあります。 これは、物理的な破損 (ディスクやメモリの破損など) が原因である可能性があります。 また、古いオペレーティング システムで最後に変更されたデータベースをアタッチし、プライマリ インデックスが Unicode データを含む列を超えている場合にも返される場合があります。 Unicode データに対するインデックスの詳細については、解説を参照してください。

JET_errSecondaryIndexCorrupted

セカンダリ インデックスでエラーが発生しました。 これは、物理的な破損 (ディスクやメモリの破損など) が原因である可能性があります。 また、古いオペレーティング システムで最後に変更されたデータベースをアタッチし、セカンダリ インデックスが Unicode データを含む列を超えている場合にも返される場合があります。 Unicode データに対するインデックスの詳細については、解説を参照してください。 esentutl -d コマンドを使用してデータベースがオフライン ユーティリティで最適化されると、セカンダリ インデックスは完全に再構築されます。

JET_errTooManyAttachedDatabases

インスタンスごとにアタッチできるデータベースの数は限られています。 制限は現在、インスタンスあたり 7 つのデータベースです。

JET_wrnDatabaseAttached

データベース ファイルがこのセッションによって既にアタッチされていることを示す致命的でない警告。

解説

データベース ファイルは、 JetDetachDatabase または JetDetachDatabase2 を使用してデタッチされます。

解説については、「 JetAttachDatabase 」を参照してください。

必要条件

要件

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

JetAttachDatabase2W (Unicode) および JetAttachDatabase2A (ANSI) として実装されます。

参照

拡張可能なストレージ エンジン ファイル
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetAttachDatabase
JetCreateDatabase
JetOpenDatabase
JetSetSystemParameter