DBMS 環境レポート(FireDAC)

提供: Appmethod Topics
移動先: 案内検索

デバッグとサポート(FireDAC) への移動

このトピックでは、データベース管理システム(DBMS)における FireDAC のさまざまな確認オプションおよびレポート作成オプションを説明します。これらの FireDAC レポートは、ユーザー環境に関する必要な詳細情報をすべて報告する手段となります。これらにより、顧客、開発者、顧客サポート担当者が問題の特定と解決に費やす時間が大幅に短縮されます。

FireDac で行えることは以下のとおりです。

  • FDExplorer または FDAdministrator を使用する場合 --- 永続接続定義のレポートを取得
  • TFDConnection 設計時エディタを使用する場合 -- 接続定義に関する詳細なレポートを取得
  • プログラム コードを書く場合 -- Object Pascal コードを使用してレポート作成機能をアプリケーションに統合

一般に、DBMS アプリケーションが正常に動作しない原因として考えられることは以下のとおりです。

  • DBMS クライアント ライブラリがない。
  • DBMS のクライアントかサーバーあるいはその両方のバージョンが正しくない。
  • 接続定義のセットアップが間違っている。
  • Unicode のサポートといった互換性の問題がある。

FireDAC の確認オプションとレポート作成オプションは、問題の原因を迅速に特定するうえで役に立ちます。

FDExplorer の使用

FDExplorer ユーティリティは、一元化された永続接続定義を保守するための主要ツールです。

永続接続定義の詳細レポートを取得するには、FDExplorer を実行します。左側のツリーから接続定義を選択します。その接続の詳細な環境レポートを取得するには、右側の[情報]タブをクリックします。

このレポートには以下のセクションが含まれています。

  • [接続定義パラメータ] -- すべての接続定義パラメータ
  • [FireDAC 情報] -- お使いの FireDAC ビルドについての詳細
  • [クライアント情報] -- DBMS クライアント ソフトウェアに関する情報(正しくインストールされて FireDAC で正常に読み込めるようになっている場合)。そうでない場合は、失敗のエラー メッセージが表示されます。
  • [セッション情報] -- DBMS サーバーとユーザー セッションに関する情報(FireDAC でその接続を正常に開くことができる場合)。そうでない場合は、失敗のエラー メッセージが表示されます。

以下の画像は SQLite 接続定義のレポートを示しています。この場合は、既に DBMS クライアント ソフトウェアが読み込まれ、接続がアクティブになっています。


Reports1.png


TFDConnection 設計時エディタの使用

TFDConnection コンポーネントの設計時エディタは、一時接続パラメータを保守するための環境です。設計時に任意の TFDConnection コンポーネントをダブルクリックします。FireDAC パッケージに[FireDAC 接続エディタ]ダイアログが表示されます。

お使いの接続定義の詳細レポートを取得するには、先ほど述べたように、[情報]タブをクリックします。

メモ: TFDConnection コンポーネントが接続されていない場合、ダイアログは DBMS への一時接続を確立してサーバー データを取得しようとします。

次の画像は、その結果得られるレポートを示しています。

Reports2.png

Object Pascal コードの使用

以下のように TFDConnection.GetInfoReport メソッドを呼び出すことで、直接 DBMS レポートを起動することができます。

procedure TMainForm.Button1Click(Sender: TObject);
begin
  FDConnection1.GetInfoReport(mmInfo.Lines);
end;

このメソッドは以下のように宣言されています。

procedure GetInfoReport(AList: TStrings; AItems: TFDInfoReportItems);

AItems フラグの値と意味は以下のとおりです。

  • riConnDef -- 接続定義パラメータをレポートに含めます。
  • riFireDAC -- FireDAC のビルド情報をレポートに含めます。
  • riClientLog -- DBMS クライアントの読み込みログをレポートに含めます。
  • riClient -- DBMS クライアント情報をレポートに含めます。
  • riSessionHints -- FireDAC、DBMS クライアント、DBMS サーバーで互換性がない可能性がある点をレポートに含めます。
  • riSession -- DBMS セッション情報をレポートに含めます。
  • riTryConnect -- DBMS への接続を試みます(まだ接続していない場合)
  • riKeepConnected -- このメソッドで接続が確立されたとき、その接続をアクティブな状態に保ちます。
  • AList -- レポートに追加するターゲット文字列リスト。

デモ プロジェクト <FireDAC>\Samples\Comp Layer\TFDConnection\InfoReport を参照してください。

FireDAC のビルド番号の取得

FireDAC のビルド番号を(たとえば[バージョン情報]ボックスなどに)表示する場合は、FireDAC.Stan.Const ユニットに定義されている CONST C_FD_Version をただ参照します。以下に例を示します。

 C_FD_Version = '8.0.5 (Build 3365)';

DBMS のバージョンの取得

(たとえば、アプリケーションで機能の有効/無効を切り替えるために)DBMS クライアントや DBMS サーバーのバージョン番号を取得するには、TFDConnection コンポーネントを使用し、その接続を開きます。その後、以下のサンプル コードを使用します。これは、物理メタデータにアクセスする方法を示しています。

 
procedure TMainForm.Button2Click(Sender: TObject);
var
  oMetaIntf: IFDPhysConnectionMetadata;
begin
  // クライアントとサーバーのバージョンを取得する
  oMetaIntf := FDConnection1.ConnectionMetaDataIntf;
  try
    ShowMessage(Format('Client version: %.10d; Server version: %.10d',
      [oMetaIntf.ClientVersion, oMetaIntf.ServerVersion]));
  finally
    oMetaIntf:= nil; // 常に接続を閉じる前にインターフェイスを解放する
  end;
end;

FireDAC.Stan.Const ユニットには、以下のように、多数の DBMS バージョン番号があらかじめ定義されています。

  • cvOracleXXX -- Oracle 用
  • mvMySQLXXX -- MySQL 用
  • svMSSQLXXX -- MSSQL 用
  • svSQLiteXXX -- SQLite 用
  • svPGSQLXXX -- PostgreSQL 用
  • ivIBXXX -- InterBase 用
  • ivFBXXX -- Firebird 用

FireDAC では、DBMS のバージョンは、5 個の数字グループから成る LongWord 値で表されます。その各グループは 2 桁の数字です(一番左のグループは 1 桁のみの場合があります)。

たとえば、mvMySQL032321 = 0323210000 は 3.23.21.0.0 に相当します。これにより、以下のように、クライアントやサーバーのバージョンを定数と直接比較できるようになります。

if oMetaIntf.ServerVersion >= mvMySQL050000 then begin
  // MySQL 5.0 以上の特定の SQL を実行する
end
else begin
  // MySQL 5.0 以前の SQL を実行する
end;

関連項目

  • <FireDAC>\Samples\Comp Layer\TFDConnection\InfoReport