大家好,
目前公司的数据库服务器SQL2008R2,需要实现这么一个功能:
有日志能查询谁(用户名),什么时间,操作了什么数据库,什么表,操作者的IP,执行的什么语句。
参考了备份资料,启用数据库的审核。但是没办法查询到操作者的IP,只能记录session_id.
请问大家有什么好的办法吗?非常感谢。
------解决思路----------------------
用数据库是无法实现的,我是用程序来在重要操作的时候,先将操作前的记录导入记录表,包含了当前登录用户的用户名,获取到的电脑mac地址,在用的IP。但是我只是用程序监测几张表,如果要实现所有的插入删除操作,就不清楚了。2008貌似没这样的功能
------解决思路----------------------
什么时间,操作了什么数据库,什么表,操作者的IP
但是没办法查询到操作者的IP,只能记录session_id.
-》 数据库才不管 什么Ip的,它只管执行 接受的 操作命令。要想记录详细,个人觉得 还是从程序入手,自定义日志类,当然 里边要记录的东西 完全可以自己定义,定义的类 供程序调用。程序中的各个方法 不可能是都要记录的,对于比较重要的操作记录就可以。
------解决思路----------------------
业务日志,要用程序来进行记录。
因为程序上点个按钮就是一次很明确的操作,而在数据库上可能有一批数据被修改。
所以记一条业务日志比记一批数据日志要清晰的多。
------解决思路----------------------
可以用SQL Profiler工具跟踪, 并将跟踪结果记录到数据库中的表.
------解决思路----------------------
楼主可以看看这个;
监控SQL:通过SQL Server的DML触发器来监控哪些IP对表的数据进行了修改(2)
http://blog.csdn.net/sqlserverdiscovery/article/details/17020035
------解决思路----------------------
还有 数据库结构的变化:
监控SQL:通过SQL Server的DDL触发器来监控数据库结构的变化(1)
http://blog.csdn.net/sqlserverdiscovery/article/details/14447321
------解决思路----------------------
另外,sql server 数据库从2008R2开始,就有数据库审核的功能,能记录下整个数据库所有的 操作,但是不能记录 IP地址这样的信息。