none
SQL Server 2005 データを操作した端末を知りたい RRS feed

  • 質問

  • SQL Server 2005で、データ操作を行った端末を取得する方法は無いでしょうか

    あるテーブルに対して、Insert,Update,Deleteなどを行ったユーザー名、端末を知りたいです
    稼働中のDBに対して、Management Studio経由でデータを直接操作する馬鹿者がおり(権限の高い人なのに・・・)
    その人物(誰がやっているかはわかっているのですが・・・)に書庫として突きつけたいです

    復旧まではする必要は無いのですが・・・

    2011年10月11日 10:39

回答

  • アクセスログを解析するのは、確か有料のソフトで良いのがあった気がするのですが・・・

    ってのは置いておいて、

    対象のテーブルにトリガを張っておいて、HOST_NAME() や APP_NAME() や GETDATE() を取得してログテーブルにアクセス記録を

    書き込んではいかがですか?

     

    • 回答としてマーク いちろう 2011年10月13日 9:03
    2011年10月11日 11:28

すべての返信

  • アクセスログを解析するのは、確か有料のソフトで良いのがあった気がするのですが・・・

    ってのは置いておいて、

    対象のテーブルにトリガを張っておいて、HOST_NAME() や APP_NAME() や GETDATE() を取得してログテーブルにアクセス記録を

    書き込んではいかがですか?

     

    • 回答としてマーク いちろう 2011年10月13日 9:03
    2011年10月11日 11:28
  • ありがとうございます。

    使いかたによってはマメに消さないとデータ容量がすごいことになりそうですが
    そうするしか無いですかね・・・組み込めるようでしたら組み込んでみます
    有料ツールも検討してみます

    データの復旧は簡単なんですが、とりあえず復旧が可能なことは黙っておいて
    壊れたら自己責任で直してもらうとかの嫌がらせも含めて、対応してみます

    2011年10月13日 9:03
  • すでに解決済みのようですが・・・

    操作の履歴を簡単にとるだけでしたら、プロファイラを使うのが手っ取り早いかと思います
    操作を行っている時間がわかっていれば、その時間帯に起動しておけばよいだけなので・・・

    恒常的に履歴を取るのであれば、トリガよりも監査ログを使うのがよいと思います
    トリガでテーブルに履歴を保存すると、そのテーブルを操作される可能性があるのと、
    パフォーマンスやメンテナンス性の面でも監査ログの使用が推奨されています
    (SQLServer2008であれば、トリガと比較して監査ログのパフォーマンスは遥かによいのですが

     

    2011年10月13日 15:32
  • 私も、トリガーで記録を残す方式がお手軽ではないかと思います。

    特定のユーザや特定の接続元に限定することができるのであれば、記録されるログの量も少なくて済むかもしれません。

    トリガの作り方については、

    > SQLServer2005 トリガーでクライアントPCのIPアドレスを記録したい
    > http://social.msdn.microsoft.com/Forums/ja-JP/sqlserverja/thread/94929a60-09b4-49b1-b8a3-741151fc95dc

    こちらが参考になるかと思います。

     

    2011年10月14日 3:57