LoadDB12.LZH データベース多重化システム (データベースシステムローダー) Copyright (c) 1999-2000 by Ogo mailto:ogou@icity.or.jp ●はじめに 相も変わらず御機嫌よろしくないようで…… > MS-Windows まぁ、それはともかく、データベースシステムを使って仕事をする上 では、「バックアップ」は重要課題の最右翼。 しかも、MS-Windows 上でデータベースを動かそうなんていうんだから、 「クラッシュやハングアップは日常茶飯」という状況を想定せざるを 得ないでしょう。 ハードウェアの耐用年数もヒドイものだ。価格が安くなった見返りは ちゃんと支払うことになっている。 さぁ、大事な大事なデータのバックアップをどうしますか? 最悪、MS-Windows や桐8は(別機械にでさえ)再インストールできる のですが、「データ」はバックアップがなければどこからも復元でき ませんよ。 - - - ところで、このドキュメント内では「データベースシステム」という 用語が随所に出て来ます。 これは例えば「MS-Access」や「桐」などのデータベースソフトでは なく、それらデータベースソフトを使って構築したアプリケーション を意味します。 端的に言えば、「MS-Access」ならば(通常)「*.Mdb ファイル1つ」 ですし、「桐」ならば「 *.Tbl をベースにした *.Wfm や *.Rpt など のファイル群」になります。 運用上の前提条件として、「1データベースシステム=1フォルダ」 という構成を想定しています。 もちろん、データベースソフトから呼び出す別ソフトのオブジェクト もあるだろうし、このデータベースに関する関連資料がサブフォルダ に収められている場合もあるでしょう。 それらを含めて(サブフォルダも包含して)、1業務単位を1データ ベースシステムと認定し、これは1フォルダに収めてあるという想定 です。 言わずもがなですが、クライアント=サーバー方式で構築されている データベースシステムを想定していません。 あくまでもスタンドアローンで自マシンで「閉じている」システムが 前提です。 Ver. 1.1 で以下の点が変更になりました。 ・MS-Access の Mdb ファイルの場合、最初の1回目以降は破棄 終了の仕組みが有効に働いていなかったバグを修正。 ・システム終了時の画面で、どうすれば普通に終了できるかが 判りにくかったので、画面構成を変更。 設定の変更とシステムの終了を明確に分離した。 ・システムの初期設定(設定変更)後、直ちに当該データベース システムを起動できるように変更した。 これにより、MS-Access 以外をベースとするデータベースシス テムでも再起動ができるようになった。 Ver. 1.2 では細部のバグフィックスと説明書の変更のみです。 Ver. 1.0 以降、全ての *.Ini ファイルとは互換性がありますので、 バージョンアップに際しては *.Exe ファイルのみを上書きコピーす れば OK です。 ●利用形態 その1 自分自身が作成・運用しているデータベースシステムを起動する ために利用する。 この場合、任意のデータベースシステムに「バックアップ機能」 が付加されることになります。 また「MS-Access」の *.Mdb ファイル単独のデータベースシステム の場合、「破棄終了ができる」「修復ができる」「最適化ができる」 機能も追加されます。 その2 自分自身が作成したデータベースシステムを任意に配布するために 利用する。 機能的には上記と同じなのですが、フリーのインストーラー(もち ろん市販物でも可)を使って、ユーザーに任意のフォルダにインス トールさせることが容易になります。 「*.Exe」ファイルの実行を指示するショートカットを作成すれば 貴作のデータベースシステムを起動できますので、細かい手順など を指示しなくても「市販のソフト同様に SetUp.Exe を実行して」と いうだけで、目的が達成できるようになります。 もちろん、アンインストールもコントロールパネルの「アプリケー ションの追加と削除」で簡単にできるわけです。 ●動作環境と開発環境 【動作環境】 MS-Windows 95 以降 (と思います (^^; 動作確認報告募集中) 32bit Windows 用のデータベースソフトで構築したデータベース システムを運用する環境( MS-DOS や Win3.1 のデータベース ソフトがメインで使われるシステムなら、問題があります) データベースソフトが正常にインストールがされていて、 レジストリによる関連付けで「Open(開く)」が目的ファイルを 目的通りの動作で開くことが前提です。 %Windows%\Command フォルダに Xcopy.exe と Xcopy32.exe が存在する環境 (人為的に特殊な事を行ってない限り、存在する筈です) 【製作環境】 PC9821 Xv20/W30 & Win 95 a & Borland Delphi 4 ( by INPRISE ) ●インストールとアンインストール 圧縮ファイルを解凍すると、 このテキストを含めて3つのファイルが 入っています。 このプログラムは単独で動かすことを想定されていません。 あくまでもメインとなるシステムは別物(貴方自身が作成)で、これ に付随させるべきものです。 従って「インストールプログラム」は存在し得ません。 もちろん、アンインストールも同様。 なお、レジストリの読み出しを行なうことはあっても、書き込みをする ことはありません。 アンインストール後にレジストリにゴミが残るようなことはありません のでご安心を。 ●準備作業 その1 目的のデータベースシステムが存在するフォルダに LoadDB.Exe を ファイルコピーします。 この Exe ファイル名は任意に変更してもらって結構です。 そのまま Exe ファイルをダブルクリック(叉は Open )して起動 します(ショートカットを任意の場所にお作り下さい)。 メインメニュー部分で、「設定変更」ボタンを押して、目的とする データベースシステムの「最初に開くファイル名」を入力して下さ い(もちろん、お好みに応じて「イメージファイル名」や「システ ムタイトル」も入力して下さい)。 そのまま「設定保存」を押せば設定完了です。 画面表示上は「*.Exe, *.Wfm, *.Cmd, *.Mdb」となっていますが、 どんな拡張子のファイルでも大丈夫です。 Paradox でも 五郎でも 大丈夫でしょうし、「システム」と呼ぶに は少し抵抗がある、桐の「 *.Tbl」1つのみでも大丈夫です。 更には、ただのテキストファイルでも一太郎の文書ファイルでも、 とにかく関連付けの「Open(開く)」で開けるものなら何でもOK なんです。 (^^) (「標準の関連づけ」ではなく「Open」である事 に注意――っても、普通の人には同じ意味だが) この手のファイルを目的とするなら、「参照」のダイアローグでは、 「ファイルの種類」を「全てのファイル」にして下さいね。 なお、MS-Access の *.Mdb ファイルを指定した場合は、動作説明の ところで述べるバックアップファイル/テンポラリファイルの関係で、 環境設定を変更した場合は、一旦終了します。改めて起動して下さい。 その2 「利用形態その2」の場合、先方ユーザーに上記作業を求めるのは 顰蹙モノです。 従って、上記設定をファイルにして一緒に配布します。サンプルは 同梱の「LoadDB.INI」です。これは極めて簡単なテキストファイル ですので、メモ帳か何かで任意に書き換えて下さい。 書き換えるのは [Execute] セクションの 「DBPath=」の値と [System]セクションの「ImagePath=」「Title=」の値だけです。 [BackUp]セクションは空白にしておいて下さい。 重要なのは、「DBPath=」「ImagePath=」の設定に、ファイル名だけ 書いて、パス名を入れないことです。それで自動的にカレントパス (データベースシステムがインストールされたフォルダ)と看做さ れます(一旦起動した後は、自動的にフルパス名に変換されます)。 少なくとも1度は上記1の方法を試してみて、中身を確認しておく のが良いでしょう。 なお、 *.Exe ファイルの名前を ABC.Exe に変更した場合、 *.Ini ファイルも同じく ABC.Ini に変更する必要がありますので念の為。 ●動作説明 「最初に開くファイル名」が「*.Mdb」か否かで弱冠の違いがあります。 一般のファイルの場合 *.INI ファイルに書かれてある「最初に開くファイル名」をフルパスで 取得します。 その拡張子を判別して、レジストリより関連付けを探します。 「Open(開く)」になっている設定のコマンドラインを取得します。 もし「最初に開くファイル名」が「*.Exe」「*.Bat」「*.Pif」ならば そのまま実行します。 それ以外ならば、取得したコマンドラインの最後のパラメーターとして 「最初に開くファイル名」を代入して実行します。 この時、実行するシステムは必ず「最大化」されます。 呼び出されたプログラムが終了するまでは、タスクトレイにアイコン化 してひたすら待ちます。このアイコンをクリックしても「稼働中」表示 が出るだけで、呼び出したソフトが起動している状態のままで終了させ ることはできません。 データベースシステムが終了すると(または、「最初に開くファイル名」 が空白 or 存在しないファイル名だったりした場合)、メインパネルが 開きます。 ここではこのデータベースシステムのローダー稼働に関する設定が変更 でき、バックアップ機能が使えます。 少なくとも「配布」するならば、「イメージファイル名」と「システム タイトル」はカスタマイズされたものを考慮して下さい。 イメージファイルには必ず「データベース開発者」の連絡先を入れてお いて下さいね。私の所に問い合せが来たら困ってしまいます。 (^^) *.Mdb ファイル( MS-Access のファイル)の場合 以下の点が違います。 ・システム起動前に、*.Mdb ファイルのコピーを作ります(ファイル 名は *.Mdb.Tmp です)。 ・システム終了後に「保存終了」「破棄終了」「保存継続」が選択で きます。桐ユーザーにお馴染みの上記3種類の違い(動作)は以下 の通り。 「保存終了」すると、 *.Mdb.Tmp を *.Mdb.Bak という名前に 変更して1世代前のデータを残します(既存の *.Mdb.bak は 強制上書きされます)。 「破棄終了」すると *.Mdb を削除した上で *.Mdb.Tmp を *.Mdb に戻して、1世代前(起動前)の状態に戻します。 「保存継続」すると上記保存終了と同じことをした後に改めて *.Mdb.Tmp を作り直してから *.Mdb ファイルを開きます。 長時間の入力作業を続行するような場合には、一定時間置きに この「保存継続」を行なえば、その間のデータの保持が保証さ れます。 ・「修復」「最適化」を実行できます。 ・環境設定を変更した場合は、このシステムを一旦終了します(この 時、*.Mdb ファイルの名前を変更した場合、事後に *.Mdb.Tmp も 残ります)。 上記の MS-Access 特有の機能は「最初に開くファイル名」に設定されて いるファイルに対してのみ適用されます。 ●バックアップ動作について 基本的に、 Xcopy コマンドを利用してシステムの存在するフォルダ全体 を別ドライブに丸ごとコピーしてしまうものです。 どうしても充分な容量の別ドライブを用意できなければ、同一ドライブ にバックアップすることも可能です。 タイムスタンプ比較で「より」新しいファイルのみをコピーしますので、 バックアップ先が変更されない場合は、2度目からはバックアップ所用 時間が短縮されます。 オプションとして次の2つの選択肢があります。 1.日付基準による多重化をするか(デフォルトは「しない」) バックアップ先フォルダ名は、 <選択したドライブ> :\BackUp\ <システムフォルダ名からドライブ名を除いたもの> を連結したものです。 例.システムが「C:\Test」で選択が「D:」なら バックアップ先は「D:\BackUp\Test」となります。 が、日付基準による多重化をすれば、最後に「今日」を表わす文字列 が付きます。 例.上記例で「今日」が 2000/2/15. なら バックアップ先は「D:\BackUp\Test\00_02_15」となります。 (「地域のプロパティ」での日付形式(短い形式)に対応 区切り文字は「/」に決め打ちしていますが) これにより「世代管理」が可能になります。 2.サブフォルダもバックアップ対象にするか(デフォルトは「する」) データベースシステムの構成上サブフォルダにもデータが枝分かれ している、または関連資料などをサブフォルダに収蔵している場合 などに、これらも含めたバックアップを取ります。 ところで、MS-Aceess の *.Mdb ファイルを指定してある場合、「動作の 説明」で述べている点で察しがつくと思いますが、 *.Mdb と *.Mdb.Tmp と *.Mdb.Bak の3種類がバックアップされます。 この時点では *.Mdb.Tmp は1世代前で、*.Mdb.Bak は2世代前になりま すよね。 バックアップ先の残り容量が元の *.Mdb ファイルの3倍必要な点に注意。 ●言い訳 Ver. 1.0 で MS-Access の *.Mdb ファイルの破棄終了処理がうまく働いて いなかったのを知り愕然。 (^x^; 実は実務では MS-Access 専用のプロトタイプを使っていて、そちらは全く 問題ないのでした。 (^^; データベースシステム汎用にするためにいじった箇所に Windows API に関 する私の誤解が含まれていたため、この情けない事態が発生したのです。 もし、 Ver. 1.0 で破棄終了ができずに困っていた人がいましたら申し訳 ありません。 _m(__)m_ でも、今に至るまで誰も何も指摘してくれていないんだよ〜。 ●最後に この「データベース多重化システム(データベースシステムローダー)」 は Ogo の著作物です。 Ogo は これのバグ訂正やバージョンアップの義務を一切負いません。 ユーザーサポートの義務も負いません。 このシステムを使った結果、生じた損害に関しては Ogo は一切関知しま せん。 ご自分の責任とリスクにおいてお使い下さい。 このシステムを使った結果、生じた喜びや感謝や感想は、動作環境と共に Ogo に伝えてもらえれば、Ogo は大喜びするでしょう。(^_^) このシステムを、自分のシステムに組み込んだり貴作のデータベースシス テム配布に利用するなどの応用はどうぞ好き勝手にして下さい(商業用途 のデータベースシステムでもOKです)。 私には連絡の必要は一切ありません。 貴作のデータベースシステムに組み込んで一緒に配布する場合には、でき れば説明文の端にでも「ローダー/バックアップ部分の著作権は Ogo に ある」旨を書いていただければ有り難いです。 貴作のデータベースシステムに組み込むわけではなく、このシステム単体 を配布するなら、この説明書も添付して下さい。 不特定多数の方への配布でなければ、再譲渡は自由です。 物好きにも転載等をしたい人がいれば、事前に Ogo まで E-Mail でご連絡 下さい。 Ogo mailto:ogou@icity.or.jp URL=http://www.icity.or.jp/usr/ogou/ ----------------------------------------------------------------------- 蛇足 これは「フリーソフトウェア」です。代金支払いの義務は全くありません。 ただしよっぽど気にいった方がいらしたら、寄付金をいただくのにやぶさか ではありません。 その際には下記まで送金下さい。領収証が必要なら送付も可です。 もちろん金額に要望なぞはありません。 郵便振り替え 口座番号: 01320-2-15048 加入者名: Office Ogo