データベースのエラーで動かなくなる問題(1.7)

エラーといえば、サポートに上がってくるDAブラックホールの「致命的なエラー」の上位2つが
データベースエラー
である。

  1. 「データベースの不具合があります。- n  サポートにご相談ください。」
    nには -2147467259 が入るケースが多い。その場合はデータベース損傷である。ファイルが壊れているため、システムを再起動したとしても改善することは少ない。
    破損の場所によっては、DAブラックホールの起動そのものができなくなることもある。
  2. 「解析結果のデータベース記録に異常が発生しました。( n ) 解析を中止しますか?」
    nには -2147024882 が入るケースが多い。その場合はメモリ不足またはストレージ不足(HDD/SSD)である。

この2つのエラーは、どちらか一方というよりは、「どっちが先に出やすいか」みたいなところがある。

背景と原因

2000年代前半のDAブラックホールでは、これらのエラーはよく出た。
Jetエンジンを使用していたということもあるが、解析結果の記録に必要なマシンリソースが足りなければ、容易にOSが処理を中断してアプリケーションを強制終了させていたからである。そうなると、何割かの頻度でデータベースファイルに不整合が生じ、結果としてファイルが開けなくなった。
あるいは、処理に必要なメモリが足りなくなって頻繁にスワップが生じ、タイムアウトして強制終了したときは、メモリ不足を表示した後、再起動すると、ファイルまで壊れている、開かないといった順序。
いずれも、必要な処理量に対してPCのマシンリソースが追い付いていないときに、よく起きていた。

これも、2000年代後半になると、PCの価格に対する性能(価格性能比)が向上してきて、標準的なPCであれば、データベースエラーはめったに起きなくなった。
起きたとすれば、旧式なPCでのリソース不足か、ノートPCの排熱不足などシビアコンディションにあるかのどちらかであることが大半だった。

ところが2015年以降から、じわりとではあるがデータベースエラーの報告が増え始めてきた。
当社では再現しない(もう起きない)ので、ユーザーのイベンログを送ってもらったところWindows (8/8.1)/10の Windows Update による強制再起動が原因のひとつとなっていた。

また、「SSDが原因」というケースも見受けられた。
データベースファイルの処理落ちを防ぐためにSSDを用いる、という この一見 優等生的な環境で起きていたのは「肥大したデータベースファイルの放置」によって、データのロード時にメインメモリが足りなくなりエラー停止、あるいはSSDの小柄な領域を圧迫していたということもあった。こちらは、どちらかというと完璧ゆえの油断といえるのかもしれない。


予防方法

Windows Update については防ぎようがないこともあるが、シビアコンディションについては予測や予防が可能であることが多い。

たとえばdablack.accdb のファイルサイズが メインメモリの1/2(半分)を超えないようにすると、ある程度 有効に防げることがわかっている。
とはいえども、いちいち監視はできないと思うので、数カ月から1年に1回程度、ファイルサイズを確認してメインメモリの1/2を超えていないか確認する、というペースで 多くの人は大丈夫なんじゃないかと思う。
もしオーバーしていた(またはオーバーに近づいていた)ときは、DAブラックホールと同時インストールされている
DABHREFL.exe
を使って、余分な領域を削ぎ落すといい。

復旧方法

もしDAブラックホールの起動ができるなら、最も容易な復旧方法は「最新版アップデート」で、データベースごとシステムを再構成することである。この方法であれば、もともとの解析データは
rollback*
というバックアップフォルダに入るので、Microsoft Office Access 2007 以上を用いて開くことができれば、解析データもムダにならないかもしれない。

もしDAブラックホールの起動ができない場合は、残念ながらアンイストール後に再インストールを行うのが一般的である。その際のインストールメディアは、当社ダウンロードサイトから取得した最新のインストーラーを用いることをおすすめする。(最新版で運用していたところに旧式のCDからインストールすると、環境によっては必要なファイルがインストールされないおそれがあるため)