
さいしょに

この記事ではConnectのライブラリとなる[DB_Rebuild]ライブラリについて解説します。
ライブラリ群の全体の話についてはこちらの本記事に記載しています。
ライブラリの特徴
本ライブラリはデータベースがDr.Sumに限定されているものです。Dr.Sumはテーブルを再構築(Rebuild)しなければならないタイミングがあります。
私はそのタイミングで再構築をかけるよりも、夜間に毎回かければOKかなと思っています。
またDS Scriptを駆使してテーブルの断片率が50%以上であれば完全リビルドをする方法も紹介しています。
Dr.Sumには再構築コマンドを呼び出すだけでデータベースの再構築がおこなえる機能があります。
今回はその再構築コマンドを呼び出すバッチを作成し、Connectからパラメーターを渡して、再構築を実行する仕組みを作成します。
ライブラリの詳細
引き渡し変数
DB_Rebuildライブラリで必要な変数はこちら。

親スクリプトから渡してほしい変数はこちらの1つです。
です。
親スクリプトからはDB名を持たせればOKです。
親スクリプトからの変数の渡し方はこちら。

親スクリプトからは自身の変数である
を渡します。
処理の流れ

[DB_Rebuild]ライブラリはコンポーネントが5つですがTry-Catch文がほとんどで、実際はバッチコマンドを処理しているだけですので1つですね。
バッチファイルを用意する
まずはバッチファイルを用意して、Connectの入っているサーバに配置しましょう。

バッチファイルの中身はこちらです。
@echo off
cd C:\drsum57\AdminTools\cmd\JPN
rem データベースのリビルド
dwtab_rebuild "localhost" 6001 %1 %2 %3 "" 1 0 0
exit /b
cdはDr.Sumのバッチファイルが格納されているファイルを指します。今回はdwdb_rebuild.batをキックします。
dwtab_rebuild “localhost” 6001 %1 %2 %3 “” 1 0 0
dwdb_rebuildのあとにパラメータを渡しています。%1〜%3はConnectから渡すパラメーターです。
ReBuildコンポーネント
バッチファイルが設置できたら、Connect側に戻りましょう。
外部アプリケーション起動処理コンポーネントを用意します。

起動コマンドは先ほど置いたバッチファイルの場所を指します。
そして起動引数がバッチファイルの %1〜%3 に対応します。
バッチ | Connect |
---|
%1 | ${DS User ID} |
%2 | ${DS Password} |
%3 | ${DB名} |
これでOKです。
Dr.Sumのユーザー名やパスワードはConnectの中で保持しています。
(グローバルにした方がいいんだろうけど、とりあえずはスクリプト変数に保持しています)
[DB_Rebuild]ライブラリは以上で終了です。
再構築のタイミング
データベース再構築をするタイミングについて記載します。
一番スマートなのは夜間処理が終わったタイミングで最後に再構築です。夜間処理でDELETEした後にINSERTするテーブルがあればそこが最適でしょう。
ただし[毎日再構築する必要がないテーブル]がほとんどです。Dr.Sumを10年以上触っていますが、毎日再構築をしなければならないテーブルはまだ見たことがありません。
そのレアケースを外すと、夜間処理の前にBackUpと一緒にかけてしまうのがベターかなと思います。
そのため、私はMaintenanceスクリプトを夜間処理の前に動かしています。

さいごに
DB_Rebildライブラリについては以上となります。
他のライブラリについてもこちらで解説していますので、ぜひご覧になってください。