MS SQL 日志记录管理

原创
2016-06-07 17:44:56 824浏览

MS SQL的日志信息/日志记录,可能对你来说,既熟悉又陌生,熟悉是因为你可能一直都在使用,查看、关注一些日志信息/记录,例如,作业历史记录;陌生是因为你可能从不关注日志信息/记录的管理,这里我一直用日志信息/记录这个词,而没有用日志文件这个词来阐

MS SQL的日志信息/日志记录,可能对你来说,既熟悉又陌生,熟悉是因为你可能一直都在使用,查看、关注一些日志信息/记录,例如,作业历史记录;陌生是因为你可能从不关注日志信息/记录的管理,这里我一直用日志信息/记录这个词,而没有用日志文件这个词来阐述,是想让大家把它和事务日志文件(ldf)区分开来,香港服务器租用,网上你用日志文件做搜索关键词,可能搜出来的都是事务日志相关的信息。其实它真的也叫日志文件,这篇文章我大概从日志记录分类、如何查看日志记录、日志记录的位置、日志记录的设置、为什么错误日志会暴增、如何清除日志记录等方面来讲述。

日志记录分类

按日志文件查看器,习惯将错误日志归为SQL SERVER、 SQL SERVER 代理, Windows应用程序日志,数据库邮件等四类错误日志记录。如果还考虑维护计划、远程维护计划、作业历史记录日志信息,总共是7类日志信息文件。

clip_image002

其中Windows应用程序日志类型又分为系统日志(System)、安全日志(Security)、应用程序日志(Application), PatchLink日志等几种,我在服务器(Windows Server 2008 R2 Standard)上打开SSMS,居然发现又多了HardwareEvents, Internet Explorer、Windows PowerShell等日志文件。这些都是系统的日志文件。你不必太纠结有多少种。

clip_image004

日志记录位置

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目录下的日志文件

clip_image006

那么,数据库邮件日志记录位于哪里呢?作业历史记录日志信息、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,如下所示,

clip_image008

查看日志记录

查看日志记录可以确保进程(例如,备份和还原操作、批处理命令或其他脚本和进程)成功完成。此功能可用于帮助检测任何当前或潜在的问题领域,包括自动恢复消息(尤其是在 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 数据库引擎实例,再展开该实例。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。