SQL Server数据库状态监控 - 错误日志

发表于:2014-10-24 09:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张骞    来源:51Testing软件测试网采编

#
SQL
分享:
  无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯现场及原因。Windows Event Log和 SQL Server Error Log就是这样的日志, PS: SQL Server 中的错误日志 (Error Log) 类似于 Oracle中的alert 文件。
  一. 错误日志简介
  1. Windows事件日志与SQL Server 错误日志
  Windows事件日志中,应用程序里的SQL Server和SQL Server Agent服务,分别对应来源自MSSQLSERVER和SQLSERVERAGENT的日志信息;
  SQL Server错误日志中信息,与Windows事件日志里来源自MSSQLSERVER的日志信息基本一致,不同的是,Windows事件日志里信息为应用程序级,较为简洁些,而SQL Server错误日志里通常有具体的数据库错误信息。比如:
  Windows事件日志中错误信息:
  Login failed for user 'sa'. Reason: Password did not match that for the login provided. [CLIENT: 10.213.20.8]
  SQL Server错误日志中错误信息:
  Login failed for user 'sa'. Reason: Password did not match that for the login provided. [CLIENT: 10.213.20.8]
  Error: 18456, Severity: 14, State: 8.
  2. 如何理解SQL Server的Error message?
  以上面的Error: 18456, Severity: 14, State: 8.为例:
  (1) Error,错误编号,可以在系统表里查到对应的文本信息;
  select * From sys.messages where message_id = 18456
  (2) Severity,错误级别,表明这个错误的严重性,一共有25个等级,级别越高,就越需要我们去注意处理,20~25级别的错误会直接报错并跳出执行,用SQL语句的TRY…CATCH是捕获不到的;
  (3) State,错误状态,比如18456错误,帮助文档记载了如下状态,不同状态代表不同错误原因:
  1. Error information is not available. This state usually means you do not have permission to receive the error details. Contact your SQL Server administrator for more information.
  2.  User ID is not valid.
  5.  User ID is not valid.
  6.  An attempt was made to use a Windows login name with SQL Server Authentication.
  7.  Login is disabled, and the password is incorrect.
  8.  The password is incorrect.
  9.  Password is not valid.
  11. Login is valid, but server access failed.
  12. Login is valid login, but server access failed.
  18. Password must be changed.
  还有文档未记载的State: 10, State: 16,通常是SQL Server启动帐号权限问题,或者重启SQL Server服务就好了。
  3. SQL Server 错误日志包含哪些信息
  SQL Server错误日志中包含SQL Server开启、运行、终止整个过程的:运行环境信息、重要操作、级别比较高的错误等:
  (1)  SQL Server/Windows基本信息,如:版本、进程号、IP/主机名、端口、CPU个数等;
  (2) SQL Server启动参数及认证模式、内存分配;
  (3) SQL Server实例下每个数据打开状态(包括系统和用户数据库);
  (4) 数据库或服务器配置选项变更,KILL操作,开关DBCC跟踪,登录失败等等
  (5) 数据库备份/还原的记录;
  (6) 内存相关的错误和警告,可能会DUMP很多信息在错误日志里;
  (7) SQL Server调度异常警告、IO操作延迟警告、内部访问越界 (也就是下面说到的Error 0);
  (8) 数据库损坏的相关错误,以及DBCC CHECKDB的结果;
  (9) 实例关闭时间;
  另外,可以手动开关一些跟踪标记(trace flags),来自定义错误日志的内容,比如:记录如用户登入登出记录(login auditing),查询的编译执行等信息,比较常用的可能是用于检查死锁时的1204/1222 跟踪标记。
  通常错误日志不会记录SQL语句的性能问题,如:阻塞、超时的信息,也不会记录Windows层面的异常(这会在windows事件日志中记载)。
  SQL Server Agent错误日志中同样也包括:信息/警告/错误这几类日志,但要简单很多。
31/3123>
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号