sql server 错误日志errorlog
一 .概述
SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应用程序日志中。 这两种日志都会自动给所有记录事件加上时间戳。 使用 SQL Server 错误日志中的信息可以解决SQL Server的相关问题。
查看 SQL Server 错误日志可以确保进程(例如,备份和还原操作、批处理命令或其他脚本和进程)成功完成。 此功能可用于帮助检测任何当前或潜在的问题领域,包括自动恢复消息(尤其是在 SQL Server 实例已停止并重新启动时)、内核消息或其他服务器级错误消息。
使用 SQL Server 或任何文本编辑器可以查看 SQL Server Management Studio 错误日志。默认情况下,错误日志位于 Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG 和 ERRORLOG.n 文件中。例如: 我电脑win7上将sql server 2008 r2数据库安装在D:\Program Files目录下,错误日志路径为 D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log
每当启动 SQL Server 实例时,将创建新的错误日志信息,sqlserver系统自动调用 exec sp_cycle_errorlog 系统存储过程,该存储过程会关闭当前的错误日志文件,并循环错误日志扩展编号来循环使用错误日志文件,而不必重新启动 SQL Server实例 (区别mysql下 有四种日志文件,文件会一直增长,需要管理员去清除,避免影响磁盘空间) 。通常, SQL Server 保留前六个日志的备份, 按照时间顺序,依次用文件扩展名.1 .2… .6表示。每重启一次服务,文件扩展名都会加一, 最早那份会被删除。
二. Errorlog日志内容
2.1 日志自动记录的信息大概有如下:
(1) SQL SERVER 的启动参数,以及认证模式,内存分配模式。
(2) 每个数据库是否能够被正常打开。如果不能,原因是什么?
(3) 数据库损坏相关的错误
(4) 数据库备份与恢复动作记录
(5) DBCC CHECKDB记录
(6) 内存相关的错误和警告
(7) SQL调度出现异常时的警告。一般SERVER Hang 服务器死机会伴随着有这些警告
(8) SQL I/O操作遇到长时间延迟的警告
(9) SQL在运行过程中遇到的其他级别比较高的错误
(10) SQL内部的访问越界错误(Access Violation)
(11) SQL服务关闭时间
(12) SQL SERVER版本,以及windows和processor基本信息。
2.2 日志开启跟踪能看到的信息
(1) 所有用户成功或失败的登入
(2) 死锁及其参与者的信息。跟踪标志1222 或1204
2.3 日志不能记录的问题
(1) 阻塞问题。只要阻塞还没有严重到影响线程调度,日志里是不会体现的。
(2) 普通性能问题,超时问题。
(3) windows层面异常。
所以在检查sqlserver 相关问题的时候,总是从error log着手,如果error log里有一些错误或警告,就要确认排查,如果记录问题的时间与软件系统出问题时间对得上,就需要着重分析。
三 .跟踪标志
使用DBCC TRACEON来指定要打开的跟踪标记的编号,跟踪标记用于通过控制 SQL Server 的运行方式来自定义某些特征。 启用的跟踪标记将在服务器中一直保持启用状态,直到执行 DBCC TRACEOFF 语句将其禁用为止。在 SQL Server 中,有两种跟踪标志:会话和全局。 会话跟踪标志对某个连接是有效的,只对该连接可见。 全局跟踪标志在服务器级别上进行设置,对服务器上的每一个连接都可见。 若要确定跟踪标记的状态,请使用 DBCC TRACESTATUS。 若要禁用跟踪标记,请使用 DBCC TRACEOFF。
-- 下面示例是记录死锁,跟踪标志1222 或1204, 脚本如下所示:
--指定打开当前会话的跟踪标志1222 或1204
DBCC TRACEON (1222,1204)
--以全局方式打开跟踪标志1222 或1204
DBCC TRACEON (1222,1204, -1);
-- 查看跟踪标志状态,如下图所示
DBCC TRACESTATUS

-- 以全局方式关闭跟踪标志状态
DBCC TRACEOFF(1222,1204, -1)
其它跟踪标志号可参考官方文档:
四. 配置errorlog
在对象资源管理器中,展开 SQL Server 的实例,展开“管理”,右键单击“SQL Server 日志”,再单击“配置” 如下图所示:

4.1 限制错误日志文件在回收之前的数目
若选中此选项,将限制在错误日志回收前可以创建的错误日志数。 每次启动 SQL Server 实例时都将创建新的错误日志。 SQL Server 将保留前六个日志的备份,除非选中此选项并在下面指定一个不同的最大错误日志文件数。
4.2 最大错误日志文件数
指定错误日志文件回收前创建的最大错误日志文件数。 默认值为 6,即 SQL Server 在回收备份日志前保留的以前备份日志的数量。
五. SQL Server 代理错误日志

SQL Server 默认情况下,代理创建错误日志来记录警告和错误。 SQL Server 最多可以维护九个 SQL Server 代理错误日志。 每个存档日志都有一个扩展名,指示该日志的相对存在时间。 例如上图,当前表示最新的存档错误日志,而编号1 表示最旧的存档错误日志。
默认情况下,执行跟踪消息不写入 SQL Server 代理日志错误,因为它们会将日志填满。 如果错误日志已满,会降低选择和分析更严重的错误的能力。 因为日志会增加服务器的处理负荷,所以请务必仔细考虑是否值得将执行跟踪消息捕获到错误日志中。 通常,最好仅在调试某个特定问题时捕获所有消息。
六.查看errorlog
Errorlog 文件以文本方式记录,用任何文件编辑器都能打开。下面介绍二个存储过程来过滤查看日志文件。
6.1 xp_enumerrorlogs
通过xp_enumerrorlogs可以查看错误日志文件的存档和占用空间大小, 默认参数是1, 表示查看sql server日志。 参数2 表示查看sql server 代理错误日志列表。脚本如下所示:
-- 查看sql server日志列表
EXEC xp_enumerrorlogs

-- 查看代理错误日志
EXEC xp_enumerrorlogs 2

6.2 xp_readerrorlog
通过系统存储过程:xp_readerrorlog,能条件过滤日志内容查看,它一共有7个参数,分别是:
(1). 存档编号(0~99)
(2). 日志类型(1为SQL Server日志,2为SQL Server Agent日志)
(3). 查询包含的字符串
(4). 查询包含的字符串
(5). LogDate开始时间
(6). LogDate结束时间
(7). 结果排序,按LogDate排序(Desc、Asc)
例1 :查看当前sql server错误日志文件内容。存档编号默认值是0,日志类型默认是1,如果要查看当前sql server错误日志文件内容有三种写法,脚本如下:
EXEC xp_readerrorlog
EXEC xp_readerrorlog 0
EXEC xp_readerrorlog 0,1
例 2:查看SQL Server日志历史存档为编号1的文件中,发生的时间为2018-10-27 19:00点 至2018-10-27 20:00之间的错误,排序方式为时间的倒排序,为了满足上面的要求,脚本如下:
EXEC xp_readerrorlog 1,1,null,null,'2018-10-27 19:00','2018-10-27 20:00','DESC'
例3: 查看当前SQL Server日志文件中,错误内容里面包含字符串:“Login failed for user 'sa'” 的错误,脚本如下:
EXEC xp_readerrorlog 0,1,'Login failed for user ''sa'''
sql server 错误日志errorlog的更多相关文章
- SQL Server 错误日志过滤(ERRORLOG)
一.背景 有一天我发现SQL Server服务器的错误日志中包括非常多关于sa用户的登陆错误信息:“Login failed for user 'sa'. 原因: 评估密码时出错.[客户端: XX.X ...
- SQL Server 错误日志收缩(ERRORLOG)
一.基础知识 默认情况下,错误日志位于 : C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG 和ERRORLOG.n 文 ...
- 一次清除SQL SERVER错误日志的体会!
之前在UAT环境搭建的SQL SERVER 2008 R2数据库一直用得比较正常,但最近发现在Sharepoint中不能进行任何操作了,开始以为是什么配置出了问题(因为一直在研究一些新的应用和集成,需 ...
- [AlwaysOn Availability Groups]SQL Server错误日志(AG)
SQL Server错误日志(AG) SQL Server错误日志会记录影响AG的时间,比如: 1.和Windows故障转移集群交互 2.可用副本的状态 3.可用数据的状态 4.AG endpoint ...
- SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)
需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测. ...
- SQL Server自动化运维系列 - 监控磁盘剩余空间及SQL Server错误日志(Power Shell)
需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测. ...
- SQL Server 自动化运维系列 - 监控磁盘剩余空间及SQL Server错误日志(Power Shell)
需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 在所有的自检流程中最基础的一个就是磁盘剩余空间检测. ...
- 查看MS SQL SERVER 错误日志
查看目的: 错误日志的查看是确保过程已成功完成(例如,备份和恢复操作,批处理命令,或其他脚本和过程).这可以帮助检测任何当前或潜在的问题,包括自动恢复信息(尤其是如果SQL Server实例已停止并重 ...
- SQL Server代理(5/12):理解SQL代理错误日志
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的前几篇文章所见,SQL ...
随机推荐
- jquery配合.NET实现点击指定绑定数据并且能够一键下载
最近在做培训管理系统中遇到一个问题,需求需点击绑定的数据,将指定的附件下载下来,并且是批量下载(绑定的数据非datagrid,后台拼接的绑定). 效果图如下: 大体思路: 1.jquery得到选中的绑 ...
- 封装nodeJS中 $on $emit $off 事件
事件绑定一个事件名称对应多个事件函数 应此它们的关系是一对多的关系 数据类型采用对象的形式 key:val 因为函数有多个 所以val选用数组 事件仓库 eventList = { key:val ...
- MySQL下载、安装和登录详解
MySQL是一个小型的数据库管理系统,由于其体积小,速度快,尤其是开放源代码等优点,使得其在开发中得到广泛的使用,本文主要介绍MySQL数据库从下载到安装及通过命令行的使用等. 一.下载部分 下载链接 ...
- [Abp 源码分析]十五、自动审计记录
0.简介 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口.除此之外,审计日志信息还包含有每次调用接口时客户端请求的参数信 ...
- oracle数据库默认是10次尝试失败后锁住用户
一般数据库默认是10次尝试失败后锁住用户 1.查看FAILED_LOGIN_ATTEMPTS的值select * from dba_profiles: 2.修改为无限次(为安全起见,不建议使用)alt ...
- 关于ML.NET v0.5的发布说明
适逢.NET Conf 2018举办,ML.NET v0.5也正式宣布发布了.作为面向.NET开发人员的跨平台开源机器学习框架,新的预览版本在不断演变,每次发布除了有新的功能添加,API也会进行调整, ...
- Android 解压zip文件(支持中文)
过了n多天后,当再次使用原先博客上写的那篇: Android 压缩解压zip文件 去做zip包的解压的时候,出现了原来没有发现的很多问题.首先是中文汉字问题,使用java的zip包不能很好的解决解压问 ...
- 带着新人学springboot的应用05(springboot+RabbitMQ 上)
这次就来说说RabbitMQ,这个应该不陌生了,随便一查就知道这个是用来做消息队列的.(注意:这一节很多都是概念的东西,需要操作的比较少) 至于AMQP协议(Advanced Message Queu ...
- java~spring-ioc的使用
spring-ioc的使用 IOC容器在很多框架里都在使用,而在spring里它被应用的最大广泛,在框架层面 上,很多功能都使用了ioc技术,下面我们看一下ioc的使用方法. 把服务注册到ioc容器 ...
- VSCode入门----设置成中文
将VScode设置成中文. 1.如下图,安装中文插件,点击左边后,输入chinese搜索,然后选择中文件简体进行安装. 2.按住Ctrl+Shift+P,然后输入 configure ,如下图,选择“ ...