デバッグおよびレポート作成環境に関する質問(FireDAC)
FAQ(FireDAC) への移動
このトピックでは、デバッグとレポート環境に関する、質問と回答の一覧を掲載しています。
Q1: FDExplorer のようなクライアント/セッション情報を取得するには、どうすればよいでしょうか。
A: 「DBMS 環境レポート」を参照してください。
Q2: 追跡/監視出力を生成するには、どうすればよいでしょうか。
A: 「追跡と監視」を参照してください。
Q3: 追跡/監視出力を一時的に有効/無効にするには、どうすればよいでしょうか。
A: TFDMoniXxxxClientLink.Tracing を使用します。このプロパティにより、特定の種類の追跡コンポーネントについて追跡出力が有効または無効になります。 また、確立された特定の接続の追跡出力を有効または無効にするには、FDConnection.ConnectionIntf.Tracing を使用します。
Q4: EventKind の意味は何ですか。
A: 以下の一覧をご覧ください。
- LiveCycle: オブジェクトの生成/破棄。 たとえば、IFDPhysConnection が作成されます。
- Error: DBMS エラー
- ConnConnect: 接続のオープンとクローズ
- ConnTransact: 開始/コミット/ロールバック
- ConnService: 特別なイベント
- CmdPrepare: IFDPhysCommand.Prepare の呼び出し
- CmdExecute: IFDPhysCommand.Execute または Open 呼び出し
- CmdDataIn: コマンド パラメータ値
- CmdDataOut: 結果セット行
- AdaptUpdat: 更新のポスト処理の全情報
- Vendor: 低レベル DBMS API の呼び出し
- Component: 高レベル イベント
Q5: 何らかのデバッグが必要な場合、どのユニットおよびコードのどの部分で SQL 文を確認できますか。
A: 次のいずれかの方法を使って行うことができます。
- 接続パラメータ MonitorBy を使用する。
- FireDAC.pas を開き、TFDPhysCommand.Prepare メソッドを見つけます。そこに InternalPrepare メソッドの呼び出しが含まれています。 そこにブレークポイントを設定し、FDbCommandText フィールドの値を調べます。 これが、DBMS への送信時の SQL コマンド テキストになります。
Q6: パラメータとマクロがすべて置換された最終的な SQL 文を取得するには、どうすればよいでしょうか。
A: 「TFDQuery.Text」を参照してください。 なお、FireDAC では、最終的な SQL コマンド テキストでもパラメータ値は置換されていません。
Q7: 追跡出力を有効にしたら、アクセス違反エラーが続けざまに発生します。 どこが間違っているのでしょうか。 バグでしょうか。
A: FireDAC では、ODBC ベースのドライバについては、Microsoft ODBC ドライバ マネージャの追跡機能を使用します。 追跡出力を生成するため、このマネージャは内部的に C の RTL 関数 IsBadReadPtr/IsBadWritePtr を使用しますが、これらの内部でアクセス違反が発生しているおそれがあります。 この例外はマネージャの外部には伝播されませんが、IDE のデバッガはそこで停止します。 ただ無視してください。