監査ログでは、Forguncyアプリケーションを介してデータベースのテーブルに対する操作として「いつ」、「誰が」、「何をしたのか」を確認することができます。監査ログに出力したい操作内容はテーブル毎に設定を行います。監査ログの出力を設定する方法は、テーブルの監査ログ設定を参照してください。
監査ログは以下の場所に保存されています。なお、監査ログはデバッグ実行では出力されません。Forguncy Serverへ発行したアプリケーションでのみ出力されます。
バージョンによってログファイルの保存場所が異なります
Forguncy Serverの実行アカウントを既定の「Local System」から変更している場合、既定の設定とは異なる場所に監査ログが出力されます。
Forguncy Serverの実行アカウント |
監査ログの出力場所 |
ローカルシステムアカウント(既定) |
C:¥Windows¥Temp¥Forguncyデータアクセスログ |
特定のユーザーアカウント |
C:¥Users¥<ユーザー名>¥AppData¥Local¥Temp¥Forguncyデータアクセスログ |
/var/log/ForguncyServer/Forguncyデータアクセスログ
C:¥Windows¥Temp¥ForguncyServerLog¥[アプリケーション名]¥AuditingLog
/var/log/ForguncyServer/ForguncyServerLog
なお、保存先は指定が可能です。設定方法については、保存フォルダーを参照してください。
Forguncyデータアクセスログ_<アプリケーションパス>.csv
※<アプリケーションパス>の部分には、発行時に設定した[アプリケーションパス]が入ります。
Forguncy Serverのプロセスは、監査ログを書き込むときにのみこのCSVファイルをつかんだ状態となり、書き込みが終了した段階で解放されます。そのため、Forguncy Serverを停止させることなく、監査ログのCSVファイルを編集、削除することが可能です。監査ログのCSVファイルを削除した場合には、次の監査ログの書き込みの際に自動的に再作成されます。
ログファイルには以下の項目が含まれています。先頭行は項目名となっており、記録された情報は2行目以降に出力されています。
(例)出力された監査ログの内容
日時 |
参照、または変更が行われた日時が出力されます。 |
テーブル種 |
次のテーブル種のいずれかが出力されます。
|
データベース接続文字列 |
テーブル種が「リンクテーブル」、および「外部データベースからのコピーテーブル」の場合、接続文字列が出力されます。テーブル種が「Forguncyテーブル」の場合、「該当なし」が出力されます。 |
オブジェクト名 |
データベースのテーブル名が出力されます。[ストアドプロシージャーの呼び出し]コマンド、および[SQLクエリーの実行]コマンドによるデータベース操作の場合、「該当なし」が出力されます。 |
ユーザーアカウント名 |
参照、または変更を行ったユーザーアカウント名が出力されます。ユーザー認証を行っていない場合、何も出力されません。 |
IPアドレス |
参照、または変更を行ったユーザーのIPアドレスが出力されます。 クライアントの端末がIPV4とIPV6の両方のIPアドレスを持っている場合、監査ログにはIPV6のIPアドレスが出力されます。 IPV4のIPアドレスしか持っていない場合は、IPV4のIPアドレスが出力されます。 |
アクション |
以下のアクションの種類が出力されます。
[ストアドプロシージャーの呼び出し]コマンド、および[SQLクエリーの実行]コマンドによるデータベース操作の場合、「該当なし」が出力されます。 |
成功 |
操作が成功したかどうかが出力されます。成功した場合、「有効」と出力されます。 |
ステートメント |
操作の詳細が分かる論理SQL文が出力されます。このSQL文は実際にデータソースに対して発行されたSQL文ではなく、操作の詳細を表現するためのデータソースに依存しない論理SQL文であることに注意してください。 [ストアドプロシージャーの呼び出し]コマンド、および[SQLクエリーの実行]コマンドによるデータベース操作の場合、実行ステートメントがそのまま出力されます。 |
以下に出力されるステートメントの例を紹介します。
テーブルデータ
読み取り |
テーブルデータの読み取り SELECT TOP 500 [Order ID], [Total Price] FROM [Order Details] WHERE [Order ID] GreaterThan 10001 ORDER BY [Order ID] ASC 集計フィールドを含むテーブルの読み取り SELECT TOP 500 [Order ID], [Count] FROM [Order Details] GROUP BY [Order ID] テーブルの単一行の読み取り SELECT [Order ID], [Product ID], [Unit Price], [Quantity], [Discount] FROM [Order Details] WHERE ([Order ID] EqualsTo 10002 AND [Product ID] EqualsTo 31) テーブルのレコード数の読み取り SELECT COUNT FROM [Order Details] レコードナビゲーション型セルによる単一行の読み取り SELECT NO.1 RECORD [Order ID], [Product ID], [Unit Price], [Quantity], [Discount] FROM [Order Details] SELECT NO.12 RECORD [Order ID], [Product ID], [Unit Price], [Quantity], [Discount] FROM [Order Details] SELECT LAST RECORD [Order ID], [Product ID], [Unit Price], [Quantity], [Discount] FROM [Order Details] |
追加 |
INSERT ROW([Order ID]=10000, [Product ID]=25, [Unit Price]=12, [Quantity]=2, [Discount]=0) INTO [Order Details] |
更新 |
UPDATE [Order Details] SET ([Order ID]=10001, [Product ID]=25, [Unit Price]=10, [Quantity]=30, [Discount]=0.15) IN ROW([ID]=1, [Unit Price]=9.8, [rowversion]=System.Byte[]) |
削除 |
DELETE ROW([Order ID]=10000, [Product ID]=17, [Unit Price]=27, [Quantity]=4, [Discount]=0, [rowversion]=System.Byte[]) FROM [Order Details] |
参考:
更新の場合、影響を受けたレコードのIDが「[ID]=」として出力されます。
追加の場合は追加されたレコードのIDは出力されません。
ワークフロー
ワークフロー情報の読み取り |
SELECT [WorkFlowInfo] OF [Order Details].RECORD([Order ID]=10000) |
ワークフロー履歴の読み取り |
SELECT [WorkFlowHistory] OF [Order Details].RECORD([Order ID]=10000) |
ワークフローアクションの実行 |
UPDATE [WorkFlowInfo] OF [Order Details].RECORD([Order ID]=10000) FROM ([Assignee]=) TO ([Assignee]=Administrator, [Comment]=change assignee) BY アクション[Change Assignee]) |
[ストアドプロシージャーの呼び出し]コマンド
CALL STORED PROCEDURE proc_get_student WITH PARAMETERS Input int @ID=1, InputOutput varchar @Name=1,
[SQLクエリーの実行]コマンド
EXECUTE SQL WITH STATEMENT: INSERT INTO [Table2]([Text] , [Integer], [Decimal]) VALUES('SQLServer', 100,200) WITH TIMEOUT 0, QUERYCOUNTLIMIT 0 AND PARAMETERS