MSSQL中管理查询日志的实践(mssql 查询日志)
随着用户系统的增多,以及用户操作的加剧,数据库查询日志及时完整的记录和显示,对数据库的管理和数据的安全,特别是出现数据库问题时,对日志的追查和分析尤为重要。而MSSQL提供了对查询日志进行管理的实践方案,可以有效满足管理查询日志的要求。
首先,MSSQL提供了两个系统存储过程,用于管理查询日志。其一是sp_readerrorlog,在执行之前,可以在SQL Server 错误日志表中检索某一时间段内的所有查询日志,这样可以快速查找出相应的数据,然后再与数据库操作进行深入的分析以便发现问题的症结所在;其二是sp_enumerrorlogs,它可以建立一个查询日志的备份和清理任务,来收集系统查询日志,以便能及时进行检查与分析,一般间隔为一周、半月或者一月,收集、保存和清理查询日志。
管理查询日志还可以利用MSSQL server的事件通知,可以更加定制的捕获日志变化情况,以获取系统的日志改变以及添加的相应的数据库操作,如增删改等:
CREATE EVENT NOTIFICATION EventNotify_ManageLog
ON SERVER FOR LOGON
TO SERVICE 'MyQueueNotification', 'current database' WITH FAN_IN
GO
最后,查询日志的管理还可以利用MSSQL的高级特性,比如报表服务,将日志数据转化为相应的可视化报表,以供管理者检查相关数据,追踪用户权限变化情况等,这可以更加清晰的看到数据库的活动情况:
SELECT
COUNT(EventSubClass) AS count, SessionLoginName,
CONVERT(VARCHAR(19), StartTime, 120) AS start_date_time FROM
sys.dm_exec_sessions GROUP BY
SessionLoginName, StartTime
ORDER BY SessionLoginName
有了上述实践,MSSQL 查询日志的管理就比较高效和准确了。只要按照上述实践,定期采集相应查询日志报表,不仅能够有效防止数据库报警,发现系统问题并及时解决,同时也能够加强数据库安全与管理。