InterBaseでSQL文を実行時にsort errorが発生した場合の対処方法

提供: Support
移動先: 案内検索

問題

InterBaseでorder by句をつけたSQL文を実行すると、下図のようなsort errorが発生しました。

Thumb03002021ujpn.png

このエラーの対処方法を教えてください。

解決

このケースは、sort errorが発生し、ib_sort_xxxxx...というファイルが開けないという内容のエラーです。 InterBaseのSQL文ではorder by句を指定すると、クエリのソートが行われるのですが、 デフォルトで、Windowsの環境変数TMPで指定されているフォルダ内に一時的にソートするためのファイルが作成されます。


※環境変数TMPを確認する方法は、コマンドプロンプトを起動し、set TMP と入力ください。

デフォルトでは、以下のように表示されます。

C:\Users\< ログイン名>\AppData\Local\Temp


このエラーが発生する原因として以下のような理由が考えられます。

  • 環境変数TMPで指定されているフォルダの容量が許容数をオーバー、あるいは空き容量が足りない
    (32ビット版のWindowsでは、4GB以上のサイズは容量オーバーとなります)
  • ibconfigのSORTMEM_BUFFER_SIZEのサイズが足りない
  • InterBaseのデータベースファイル(*.gdb、*.ib)のサイズが大きい


そこで、このケースの対処方法として以下を試してください。

  • 環境変数TMPで展開されているテンポラリファイルをクリアする
    (余計なファイルが残っている場合は、削除して、空き容量を増やしてください)
  • ibconfigのTMP_DIRECTORYの指定を任意のフォルダに設定する
  • ibconfigのSORTMEM_BUFFER_SIZEを変更する


ibconfigは、InterBaseのホームディレトリ内に配置されています。

例えば、InterBase 2020の32ビットの場合は、InterBaseのホームディレトリはデフォルトで以下のパスになります。

C:\Program Files (x86)\Embarcadero\InterBase2020


なお、ibconfigで設定する各パラメータの説明は、以下のドキュメントを参照ください。 http://docs.embarcadero.com/products/interbase/IBXE7_JP/OpGuide_ja.pdf