ms sql的日志信息/日志记录,可能对你来说,既熟悉又陌生,熟悉是因为你可能一直都在使用,查看、关注一些日志信息/记录,例如,作业历史记录;陌生是因为你可能从不关注日志信息/记录的管理,这里我一直用日志信息/记录这个词,而没有用日志文件这个词来阐述,是想让大家把它和事务日志文件(ldf)区分开来,香港服务器租用,网上你用日志文件做搜索关键词,可能搜出来的都是事务日志相关的信息。其实它真的也叫日志文件,这篇文章我大概从日志记录分类、如何查看日志记录、日志记录的位置、日志记录的设置、为什么错误日志会暴增、如何清除日志记录等方面来讲述。
日志记录分类
按日志文件查看器,习惯将错误日志归为sql server、 sql server 代理, windows应用程序日志,数据库邮件等四类错误日志记录。如果还考虑维护计划、远程维护计划、作业历史记录日志信息,总共是7类日志信息文件。
其中windows应用程序日志类型又分为系统日志(system)、安全日志(security)、应用程序日志(application), patchlink日志等几种,我在服务器(windows server 2008 r2 standard)上打开ssms,居然发现又多了hardwareevents, internet explorer、windows powershell等日志文件。这些都是系统的日志文件。你不必太纠结有多少种。
日志记录位置
sql server日志记录、 sql server代理记录的位置如下所示, sql server日志记录一般存储在errorlog.n(n为数字)文件里, sql server代理日志记录位于sqlagent.n这类的文件里。当然这跟数据库的版本也有关系:
版本
路径
sql server 2005
program files\microsoft sql server\mssql.n\mssql\log
sql server 2008
program files\microsoft sql server\mssql10.实例名\mssql\log
sql server 2008 r2
program files\microsoft sql server\mssql10_50.实例名\mssql\log
sql server 2005,默认情况下,错误日志位于 program files\microsoft sql server\mssql.n\mssql\log\errorlog 和 errorlog.n 文件中。其中mssql.n的区分为:
mssql.1:sqlserver
mssql.2:ssas
mssql.3:sqlexpress
mssql.4:ssrs
所以,一般情况下,你只需要关注msssql.1目录下的日志文件
那么,数据库邮件日志记录位于哪里呢?作业历史记录日志信息、windows应用程序日志又位于哪里呢?是不是从没考虑过这些?
数据库邮件日志记录信息可以从视图msdb.dbo.sysmail_event_log查询得到,实质保存在[dbo].[sysmail_log]表里面。
sysmail_event_log
作业历史记录日志信息都保存在msdb.dbo.sysjobhistory的表里面,其中run_status字段代表作业执行状态
0 = 失败
1 = 成功
2 = 重试
3 = 已取消
4= 正在进行
所有windows应用程序日志其实都位于同一位置%systemroot%\system32\winevt\log。像application日志文件位于%systemroot%\system32\winevt\logs\application.evtx,如下所示,
查看日志记录
查看日志记录可以确保进程(例如,备份和还原操作、批处理命令或其他脚本和进程)成功完成。此功能可用于帮助检测任何当前或潜在的问题领域,包括自动恢复消息(尤其是在 sql server 实例已停止并重新启动时)、内核消息或其他服务器级错误消息。
方式1: 查看错误日志文件
对sql server、sql server agent日志记录信息,你可以直接去log目录下找到errorlog、sqlagent日志文件,直接打开查看;而像windows应用程序日志记录,去到%systemroot%\system32\winevt\log目录,找到对应的日志文件,直接打开查看。
方式2:通过ssms来查看日志记录
查看与常规 sql server 活动相关的日志
在对象资源管理器中,依次展开“管理”和“sql server 日志”,再双击“当前”,将显示 sql server、“sql 代理”和“windows 事件”日志。查看与作业相关的日志
在对象资源管理器中,展开“sql server 代理”,右键单击“作业”,再单击“查看历史记录”,此时将显示“作业历史记录”和“sql 代理”日志。查看与维护计划相关的日志
在对象资源管理器中,展开“管理”,右键单击“维护计划”,再单击“查看历史记录”,此时将显示“维护计划”、“作业历史记录”和“sql 代理”日志。
方式3:用脚本查看
3.1 对于sql server日志文件,可以通过下面脚本查看:
--查看日志文件的存档号
exec master.dbo.sp_enumerrorlogs
用这个命令可以查看日志文件的大小,这个非常有用,你可以把大小异常的文件给排查出来。
--根据存档号查看该档日志内容
exec master.dbo.xp_readerrorlog 1
--根据job_id查看sql server日志记录
select * from msdb.dbo.sysjobhistory where job_id='36e9232b-cd5b-4646-9bed-b8242090fff9'
3.2 对于作业历史记录日志信息,你既可以通过下面存储过程查看,也可以直接查询对应的表。
例如,服务器空间,我要查看作业“serverdiskcapacitycheck”的历史记录
code snippet
3.3数据库邮件记录查看
select * from msdb.dbo.sysmail_event_log;
日志记录管理
设置最大错误日志文件数
1:在对象资源管理器中,连接到 sql server 数据库引擎实例,再展开该实例。
