Linux および macOS でのデータ アクセスのトレース

ODBC ドライバーのダウンロード

macOS と Linux の unixODBC Driver Manager では、ODBC Driver for SQL Server の ODBC API 呼び出しの開始と終了のトレースがサポートされます。

アプリケーションの ODBC の動作をトレースするには、odbcinst.ini ファイルの [ODBC] セクションを編集します。 Trace=Yes の値を設定し、TraceFile の値をトレース出力を格納するファイルのパスに設定します。 次に例を示します。

[ODBC]
Trace=Yes
TraceFile=/home/myappuser/odbctrace.log

/dev/stdout またはその他のデバイス名を使用して、永続的なファイルではなく、そこにトレース出力を送信することもできます。 上記の設定では、アプリケーションで unixODBC Driver Manager が読み込まれるたびに、実行されたすべての ODBC API 呼び出しが出力ファイルに記録されます。

アプリケーションのトレースが終了したら、odbcinst.ini ファイルから Trace=Yes を削除してトレースによるパフォーマンス低下を回避し、不要なトレース ファイルが削除されるようにします。

トレースは、odbcinst.ini 内のドライバーを使用するすべてのアプリケーションに適用されます。 すべてのアプリケーションをトレースしない (ユーザーごとの機密情報の公開を避けるためなど) 場合は、個々のアプリケーション インスタンスをトレースできます。 インスタンスに、ODBCSYSINI 環境変数を使用して、プライベートな odbcinst.ini の場所を指定します。 たとえば、次のように入力します。

$ ODBCSYSINI=/home/myappuser myapp

この場合、/home/myappuser/odbcinst.ini[ODBC Driver 17 for SQL Server] セクションに Trace=Yes を追加できます。

ドライバーによって使用されているファイルを特定する

Linux および macOS の ODBC ドライバーでは、使用されている odbc.ini ファイルや、odbc.ini ファイルへのパスが認識されません。 どの odbc.ini ファイルが使用中であるかに関する情報は、unixODBC ツール odbc_config および odbcinst から入手できます。 この情報は、unixODBC Driver Manager のドキュメントから入手することもできます。

たとえば、次のコマンドを実行すると、システムとユーザーそれぞれのデータ ソース名 (DSN) を含むシステムとユーザーの odbc.ini ファイルの場所が出力されます。

$ odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/odbcuser/.odbc.ini`
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

"ユーザー DSN" は特定のユーザーのみが使用できます。 ユーザー DSN は、ユーザーのホーム ディレクトリ、またはサブディレクトリ内のファイルに格納されます。 "システム DSN" はシステム上のすべてのユーザーが使用できますが、追加、変更、および削除できるのはシステム管理者のみとなります。 あるユーザーが、システム DSN と同じ名前のユーザー DSN を持っている場合、そのユーザーによる接続時にユーザー DSN が使用されます。 詳細については、unixODBC のドキュメントを参照してください。

関連項目