热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

理解SQL代理错误日志

如我们在这个系列的前几篇文章所见,SQLServer代理是由一系列的作业步骤组成,每个步骤是不同类型将要进行的工作。如果你在第4篇所见,SQLServer代理也提供使用数据库邮件发

如我们在这个系列的前几篇文章所见,SQL Server代理是由一系列的作业步骤组成,每个步骤是不同类型将要进行的工作。如果你在第4篇所见,SQL Server代理也提供使用数据库邮件发送提醒的能力。如果出现问题,不管怎样, 你必须去查看下数据库邮件错误日志。在这篇文章里,你会学到如何理解和查看SQL Server错误日志的所有相关知识。你会查看最常见的错误日志,还有理解如何知道当一条信息需要你采取的行动,什么是对你最直接的信息。一旦你理解了错误日志,当你进行SQL Server代理相关故障排除时,你会节约大量的时间。

SQL Server代理错误日志

SQL Server代理维护它自己的错误日志,和SQL Server错误日志分开。SQL Server错误日志位置SQL Server所在目录下的\MSSQL\Log目录(C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log,这篇文章使用SQL Server 2008R2作为默认实例)。SQL Server错误日志默认名为ERRORLOG(没有文件扩展名),SQL Server代理错误日志默认名为SQLAGENTOUT。在这篇文章里,我们的大部分时间会花在SQL代理错误日志,不管怎样,你也需要看下SQL Server错误日志。

查看SQL Server代理错误日志

当你首次浏览到\MSSQL目录,并尝试查看日志目录,很可能你需要请求提升你的权限来获得访问这个目录的权限。默认情况下,SQL Server和SQL Server代理的服务账号有这个目录的读写权限,但你(使用用户账号)不能访问。如果你是本地管理员,你可以授权自己访问后,直接查看日志文件。如图1所示,默认的权限和安全设置是这样的。不要从目录里移除你服务账号的权限,否则SQL Server和SQL Server代理会不能正常工作。

《理解SQL代理错误日志》

插图1:SQL Server的Log目录权限

一旦你在\MSSQL\LOG目录里,对于SQL Server和SQL Server代理,你都会看到很多日志文件,原先的日志文件(只要正常启动服务,每次都会创建)也在目录里。SQLAGENT.OUT文件是SQL Server代理的当前日志文件,因此这是你要打开的文件。默认情况下,当你尝试打开这个文件时,你需要选择打开这个后缀为.OUT文件的默认程序。记事本就可以,当你有另一个喜好,你可以选择这个扩展文件名的文本查看器(如图2所示,选择记事本)。

《理解SQL代理错误日志》

插图2:.OUT文件用记事本打开。

一旦选择后,SQLAGENT.OUT文件会打开,如插图3所示。

《理解SQL代理错误日志》

插图3:SQL Server代理错误日志(SQLAGENT.OUT)

你很容易发现,应该有更好的方式查看错误日志,没错!SSMS有日志文件查看器,这在第4篇数据库邮件里就已经简单介绍了。切换到错误日志,展开SQL Server代理文件夹,错误日志文件夹,你会看到当前SQL Server代理的日志还有最近的日志。双击【当前】(或右击选择【查看代理日志】)你会看到SQL Server日志查看器,在查看器里当前SQL Server代理的错误日志已被勾选(如插图4所示)。

《理解SQL代理错误日志》

插图4:当前SQL Server代理日志文件的日志文件查看器

这和在插图3里显示的日志文件一样,但看起来更直观,更好管理。首先你会注意到的是现在事件分为:信息,警告和错误。使用筛选按钮(如插图5),你可以增加自己的筛选条件来限制SQL Server代理错误日志的项目(或SQL Server的任何错误日志,你已经看到,在日志文件查看器里,你可以看到所有的日志)

《理解SQL代理错误日志》

插图5:日志文件查看器的筛选设置

日志文件内容

在SQL Server代理日志的开始就有信息消息。我们每步都过一遍,简单介绍下消息的意思。

[393] 正在等待 SQL Server 恢复数据库…

SQL Server代理服务已经启动,但还不能配置和运行它,因为msdb数据库还不可用。SQL Server代理的大部分配置和设置都保存在msdb。部分配置细信息保存在系统注册表里。SQL Server不能启动直到msdb数据库恢复。消息前的数字(393)是SQL Sever代理的内部信息号,本人从没见过公开文档记录SQL Agent的错误编号。

[100] Microsoft SQLServerAgent 版本 10.50.1600.1 (内部版本号 x86 unicode 零售): 进程 ID 3412

这是一条非常有用的信息。SQL Server代理版本号(即版本、服务包、和修补程序)。在此例中,它是SQL Server 2008 R2,采用sp1更新包。你可以在SQLServerCentral找到版本号。
接下来的事情是,这是一个SQL Server x86版本(即32位),这是一个标准的零售版本的产品。最后,对SQL Server代理服务的Windows进程ID标识。如果你使用Windows故障排除工具(即使是简单的任务管理器),你会看到一个进程ID,这将帮助 你把SQL Server代理服务关联到Windows信息。

《理解SQL代理错误日志》

插图6:有PID列显示的任务管理器

[101] SQL Server PC201510181429 版本 10.50.1600 (连接限制: 0)

这一消息标识SQL服务器的名称(PC201510181429),以及SQL Server的版本号。注意“0连接限制”–即是没有特定的配置,因此允许无限的连接(直到耗尽内存)。

[102] SQL Server ODBC 驱动程序版本 10.50.1600
[103] 驱动程序使用的 NetLib 是 DBNETLIB.DLL;本地主机服务器是

这两则消息表明使用ODBC的版本号(SQL Server代理使用ODBC连接回SQL服务器本地副本,事实上,它是用当地的DBNETLIB.DLL为连接。

[310] 检测到 2 个处理器和 3327 MB RAM
[339] 本地计算机是 PC201510181429,运行的是 Windows NT 6.1 (7601) Service Pack 1

接下来的两行显示的SQL服务器CPU和内存配置,以及Windows版本。

[432] 子系统缓存中有 12 个子系统

这是第二篇(SQL Server代理作业步骤和子系统)讨论过的SQL Server代理子系统。作业下有各种类型可以运行子系统(如CmdExec、ActiveX 脚本)以及一些支持复制,分析服务的子系统,你可以在msdb.dbo.syssubsystems表中查看子系统清单。

[364] 尚未启动 Messenger 服务 – 将不发送 NetSend 通知

虽然这个归类为一个错误,在大部分系统上你可以安全地忽略。Net send通知,已经从SQL Server的几个版本中取消,并且相关的Windows服务默认不是开启的。如果你还在使用Net send消息,看到了这样的错误,你需要更改Windows Messenger服务为自动启动。

[129] SQLSERVERAGENT 在 Windows NT 服务控制下启动

这个消息表明,SQL Server代理作为服务启动,而不是在命令提示符窗口。

[260] 无法启动邮件会话(原因: Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException: 无法从数据库中读取邮件配置信息。……

[355] 邮件系统初始化失败;请检查配置设置

这些消息表明在数据库邮件配置中出错。回顾第四篇数据库邮件,查看是否有类似的问题。

[396] 尚未定义空闲 CPU 条件 – OnIdle 作业计划将不起任何作用

这条警告表明一个SQL Server代理设置没有配置,可能阻止某些作业运行。你可以设置作业在CPU“空闲”时运行(在第一篇提到过)。然而,在这个系统中空闲的定义还没有被 设置。在SSMS配置此选项,右击SQL Server代理,选择属性,然后单击高级选项卡。配置空闲CPU条件如插图7所示

《理解SQL代理错误日志》

插图7:配置空闲CPU条件

你可以想象,在你的SQL Server代理错误日志还会有许多其他的错误,你应该定期检查日志。请牢记,代理日志不是用来排查作业故障的,你需要查看每个失败作业步骤的历史记录。我们在后续章节会做更多的故障排除。

配置SQL Server代理错误日志

您可以在SSMS中配置一些SQL Server代理错误日志的属性,另一些属性需要使用注册表编辑器(这是不支持的,所以不建议在生产系统)。
右 击SSMS中SQL Server代理->错误日志,你会看到一组选项。首先是“配置”,选择该选项,你会看到类似插图8。你可以更改SQL Server代理错误日志文件的存放位置(不推荐),同样可以更改代理日志级别。这些设置不能凭直观分辨–如果你勾选“错误”,你会看到错误和信息性消 息。如果你勾选“警告”,你会看到警告和信息性消息。如果你只勾选信息,在错误日志中你看不到任何错误或警告消息。
对话框中另一选项是,写入OEM错误日志,意味着写一个非Unicode的错误日志文件。理论上你可以通过它节省空间,但也不推荐。

《理解SQL代理错误日志》

插图8——配置SQL Server代理

退出插图8,右击错误日志,另一个选项是“回收”。此选项会关闭现有的SQL Server代理错误日志并开始一个新的日志文件,重命名当前SQLAGENT.OUT文件为SQLAGENT.1(所有旧的文件后缀数字递增,如 SQLAGENT.1变成SQLAGENT.2)。如果你要将当前的日志文件发送给SQL Server产品支持,这样操作将非常有用。
SQL Server代理一些其他配置需在注册表中设置(事实上,上面所做操作的设置都会更改注册表中对应的键值)。记住不建议直接修改注册表,所以更改这些设置 要你自己承担风险。然而,如果你想查看可用的设置(一些SQL Server代理设置只能在注册表中修改),你可以在注册表中SQL Server实例下查看可用的注册表键设置。例如,在我的机器上,注册表键位于HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\SQLServerAgent,如插图9所示

《理解SQL代理错误日志》

插图9:SQL Server代理的注册表项

如果你的SQL Server代理配置真的有问题时,可能需要描述(或导出)这些设置给产品支持。



本文转自Woodytu博客园博客,原文链接:http://www.cnblogs.com/woodytu/p/5177611.html,如需转载请自行联系原作者


推荐阅读
  • 语法:CREATE[索引类型]INDEX索引名称ON表名(列名)WITHFILLFACTOR填充因子值0~100GOUSE库名GOIFEXISTS(SELECT*FR ... [详细]
  • MFC程序连接MySQL成功实现查询功能,但无法实现修改操作——详解查询语句在MySQL中的使用过程
    selectxxx,xxx,xxxfromxxxwherexxxxxx,xxxxxx程序的日常开发中,我们经常会写到各种各样的简单的,复杂的查询sql语 ... [详细]
  • SQL 时间格式格式化
    将时间格式显示为:2007年5月18日--2005年5月18日SELECTCAST(YEAR(GETDATE())ASNVARCHAR)年CAST(MONTH(GET ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • phpgettext.dll的简单介绍
    本文目录一览:1、在php.ini中设置了extension=php_gettext.dl ... [详细]
  • 下面的是我的login.jsp程序当选择复选框陌生人登录的时候,点击“登录”按钮,可以进入留言界面。当有正确的用户名跟密码登录的时候就进入留言界面。但是当我都没有选择的时候直接点击“登录”按钮也可 ... [详细]
  • Qt提供了QtSql模块来提供平台独立的基于SQL的数据库操作。这里我们所说的“平台独立”,既包括操作系统平台,有包括各个数据库平台。另外, ... [详细]
  • MySQL入门_MySQL入门篇!聊聊数据库与MySQL的相关概念
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了MySQL入门篇!聊聊数据库与MySQL的相关概念相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何部署Zabbix监控实现监测和报警机制
    这篇文章的知识点包括:Zabbix的安装部署、Zabbix监控的实现以及Zabbix报警机制的实现,阅读完整文相信大家对Zabbix监控的使用有了一定的认识。Zabb ... [详细]
author-avatar
董高峯_535
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有