概要
SQL Server 2008 以降でこのSQL Server Audioという監査ログを残す機能が存在する。
ただし、SQL Server 2008 R2 以下は Enterprise Edition でないとこの機能を現実的に使うのは難しい。
(Enterprise Editionであればデータベース監査で、特定DBのみ監査ができると思われる)
SQL Server 2012 以降は監査ログに「フィルタ」という機能が加わっており、サーバ監査の機能でも必要なデータベースについてのみログを残すことが可能。
結果は、fn_get_audit_file関数でテーブルであるかのように読める。
監査の作成方法
以下の手順で「サーバ監査」で特定DBに対してのログを残すことが出来る。
SQL Server Management Studioを起動 サーバ名→セキュリティ→監査→右クリック→新しい監査 監査の出力先:ファイル ファイルパス:任意のパス フィルタ :([database_name]='対象DB')…など OKボタンを押す 作成したアイテム右クリック→有効化 サーバ名→セキュリティ→サーバ監査の仕様→右クリック→新しいサーバ監査の仕様 監査 :上記で作成した監査 監査アクションの種類:SCHEMA_OBJECT_ACCESS_GROUP OKボタンを押す 作成したアイテム右クリック→有効化 サーバ名→セキュリティ→監査→上記で作成した監査→右クリック→監査ログの表示
監査ログを外部から確認する方法
sys.fn_get_audit_file関数を利用することで、監査ログファイルの内容をテーブルのように取得してくることが可能。
SELECT * FROM sys.fn_get_audit_file('C:\LOG\*', null, null)
sys.fn_get_audit_fileリファレンス
https://msdn.microsoft.com/ja-jp/library/cc280765(v=sql.120).aspx
サーバ監査の負荷について
ほぼ影響はないと思われる。
以下の資料によると、全テーブルの監査を行った場合でも以下のような影響だとされている。
https://www.microsoft.com/ja-jp/server-cloud/local/sqlserver/2008/r2/technology/cqi.aspx#a01
SQL Server 2008 R2 徹底検証シリーズ SQL Server 2008 R2 マルチサーバー管理 環境の構築と運用ガイド 5.2.1 セキュリティ監査の負荷計測 プロセッサ利用率 : 47.8%(監査なし) → 62.2%(監査あり) 秒あたりのトランザクション量:100.0%(監査なし) → 97.0%(監査あり)