1、Windows 事件日志(Event Log)
可以在运行中直接输入:eventvwr.msc /s 来启动事件查看器,界面如下:
也可以保存事件日志,或者是打开以保存的事件日志:
2、SQL Server Errorlog 文件
错误日志默认会保留7份,按照时间顺序,依次用文件扩展名.1,.2,...,.6,每重启一次服务器,文件扩展名都会加一,而时间最早的那个会被删除:
错误日志的位置是启动参数来决定的,可以在配置管理器中来查看:
由于错误日志是以文本方式记录的,所以通过普通的编辑器就能查看。
在错误日志中会记录的信息:
(1)SQL Server版本、Windows和处理器信息
(2)SQL Server的启动参数、认证模式、内存分配模式
(3)每个数据库是否能被正常打开,如果打不开,原因是什么
(4)数据库损坏相关的错误
(5)数据库备份与恢复的记录
(6)DBCC checkdb记录
(7)内存相关的错误、警告
(8)SQL Server调度出现异常时的警告,一般Server hang会有这些警告
(9)SQL Server IO操作遇到长时间延迟的警告
(10)SQL Server在运行过程中遇到的其他比较高级别的错误
(12)SQL Server内部的访问越界错误 Access Violation
(13)SQL Server服务关闭时间
如果开启了一些设置,也会看到其他有用的信息:
(1)所有用户成功或失败的登入
(2)死锁以及参与者的信息
在错误日志中不会记录的信息:
(1)阻塞问题。只要阻塞没有严重到影响SQL Server的线程调度,在错误日志中是不会记录的。
(2)普通性能问题,超时问题。如果性能问题不是由于内存使用异常、线程调度异常、IO子系统反应非常缓慢,而是由于表、语句涉及导致,那么也不会记录
(3)Windows层面异常。如果在Windows层面出现了工作不正常,或者服务器没响应,SQL Server是无法自我判断的。
3、性能监视器(Performance Monitor)
4、SQL Trace 文件
--1. 查询默认跟踪是否开启 select configuration_id, name, value, value_in_use, description, is_dynamic, is_advanced from sys.configurations where configuration_id = 1568 --2. 当传递特定跟踪的 ID 时,fn_trace_getinfo 将返回有关该跟踪的信息 /* 跟踪的属性: 1= 跟踪选项。 有关详细信息,请参阅 sp_trace_create (Transact-SQL) 中的 @options。 2 = 文件名 3 = 最大大小 4 = 停止时间 5 = 当前跟踪状态。 0 = 停止。 1 = 正在运行。 */ select * from fn_trace_getinfo(0) --3. 查询默认跟踪信息 select loginname '登录账号', loginsid, spid '会话id', hostname '主机名', applicationname '应用程序名', servername '服务器名', databasename '数据库名', objectname '对象名', tc.category_id , tc.name '类别名称', te.trace_event_id , tc.name '事件名称', eventsubclass, --0:begin, 1:commit textdata, starttime from fn_trace_gettable('D:\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\Log\log_93.trc',0) t inner join sys.trace_events te --跟踪事件 on t.eventclass = te.trace_event_id inner join sys.trace_categories as tc --事件类别 on te.category_id = tc.category_id where databasename = db_name() and objectname is null
5、动态性能视图
6、SQLDiag工具(自动信息收集)
7、Performance Dashboard(系统自动监视工具)