none
Jet データベースのレコード サイズについて RRS feed

  • 質問

  • 以前にも質問させていただきましたが、再度質問させていただきます。

    Microsoft Jet OLE DB Provider (以下 "Jet プロバイダ") を使用して Excel データ ソースに接続して

    Excelファイルに書き込みしています。

    Jet データベースのレコード サイズについてなどの文書でデータ量の制限は4000バイト位と認識していますが、

    INSERT、UPDATE文で登録、更新する際には、4000バイトを超えたデータでも登録は問題なく処理は行えますが、

    4000バイトを超えたデータをSELECT文で取得する際には、「System.Data.OleDb.OleDbException: レコードが大きすぎます。」

    というエラーが出ます。

    INSERT、UPDATEとSELECTでデータ量の制限が違うのは何故なんでしょうか?

    参考になる文書が見つかりませんでしたので、ご教授お願い致します。

    2011年12月28日 2:43

回答

  • Microsoft.Jet.OLEDB.4.0 と Excel(バージョンは?)の組み合わせに限っ
    た話のようですので Visual Basic のフォーラムで質問するのも適切ではな
    いようです。

    前にも書きましたが、英語でのやり取りを厭わなければ、以下のフォーラム
    で質問してはいかがですか?
     
    Microsoft Office for Developers
    http://social.msdn.microsoft.com/Forums/en-US/category/officedev


    Microsoft.Jet.OLEDB.4.0 と Excel 2003 で試してみましたが、4000 バイト
    を超えても SELECT, INSERT, UPDATE いずれも可能でした。本当に SELECT
    のみがダメでした?

    ちなみに、Access 2003 の mdb ファイルでも試してみましたが、こちらは
    4000 バイトを超えると例外「System.Data.OleDb.OleDbException: レコー
    ドが大きすぎます。」がスローされました。(そもそも 4000 バイトを超え
    るレコードが作成できないので SELECT は試せませんでしたが)

    4000 バイトの制約は Jet プロバイダの制約ではなく、上記の検証結果と以
    下のページに書いてある "you must take into account when estimating
    the size of a record in a Microsoft Jet database (MDB file)." から想
    像するに、データベース (MDB file) の制約かもしれません。(単なる想像
    です、適切なフォーラムで聞いてみてください)

    DOC: Additional Jet Database Record Size Information
    http://support.microsoft.com/kb/198660/en-us

    • 回答の候補に設定 山本春海 2012年1月24日 7:21
    • 回答としてマーク yukimai 2012年1月24日 11:21
    2012年1月1日 6:18