第五篇 SQL Server代理理解代理错误日志
本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文。
正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行。在第四篇中我们看到,SQL Server代理可以通过数据库邮件发送通知。如果有什么不正确的,你必须查看数据库邮件日志。在这一篇,你将学习如何理解和查看所有相关的SQL Server代理错误日志。你将回顾最常见的错误信息,掌握哪些信息需要你采取行动,哪些信息只是单纯的信息而已。一旦你理解错误日志,在处理SQL Server代理问题时将节省大量的时间。
SQL Server代理错误日志
SQL Server代理维护自己的ErrorLog(与数据库ErrorLog分开)。数据库ErrorLog位于XX\MSSQL\Log目录下面。数据库Errorlog默认命名为ERRORLOG(没有文件扩展名),数据库代理Errorlog默认命名为SQLAGENT.OUT。这篇文章我们将花费大部分的时间来理解数据库代理Errorlog,但是你同样需要理解数据库Errorlog。
回顾SQL Server代理错误日志
当你第一次浏览上面提到的\MSSQL\目录,然后试图查看Log目录,你可能会得到一个请求来提升你的特权以获得对应目录的权限。默认情况下,SQL Server和SQL Server代理服务帐户有读/写目录的权限,但你(使用用户帐户)是没有权限的。如果你是本地管理员,你可以给自己赋权,然后直接查看日志文件。一个权限的例子,如图5.1所示,显示默认存在的安全设置。不要删除服务帐户对这个目录的权限,否则SQL Server和/或SQL Server代理可能无法正常运行。
图5.1 SQL Server日志路径属性
一旦你在\MSSQL\LOG目录,你将看到SQL Server和SQL Server代理的日志文件。默认情况下,以前的日志文件(每次启动服务时创建)也保存在目录。SQLAGENT.OUT文件是当前的SQL Server代理日志文件,因此这个文件就是你想要打开的。默认情况下,当你试图打开这个文件时,会要求选择你想用来打开此文件的程序。通常记事本足够查看此类文件,但如果你有一个更好的,选择你喜欢的文本文件查看器与文件关联(选择记事本,如图5.2所示)。
图5.2 关联记录本打开.OUT文件
一旦选择好,SQLAGENT.OUT文件将打开,如图5.3所示
图5.3 SQL Server代理错误日志
你可以很容易地看到,应该有一个更好的方式来查看Errorlog。SSMS有一个日志文件查看器,我们在第四篇的数据库邮件中简单的使用过。展开SQL Server代理文件夹,然后错误日志文件夹,你会看到一个列表中包含当前SQL Server代理错误日志和最近几个错误日志。双击当前日志(或右键单击并选择“查看代理日志”),你会看到SQL Server日志文件查看器,当前的SQL Server代理错误日志(如图5.4所示)。
图5.4 日志文件查看器查看当前代理错误日志
这和图5.3中用记事本的是同一个日志文件,但有更多的组织和管理。第一件你注意到的事情就是事件分为信息、警告、错误类别。使用筛选器按钮(图5.5),你可以添加自己的标准来限制在SQL Server代理错误日志视图(你可能注意到日志文件查看器中可以查看任何SQL Server中的错误日志)。
图5.5 日志文件查看器筛选设置
日志文件内容
信息性消息,通常在SQL Server代理日志的开头。让我们简单查看下信息的含义。
[393] 正在等待SQL Server恢复数据库…
这意味着SQL Server代理服务启动,但尚未能够配置和运行因为msdb数据库尚不可用。对于SQL Server代理主要的配置设置存储在msdb库。少量的设置保存在Windows的系统注册表。msdb恢复前SQL server代理无法使用。消息前面的数字是SQL Server代理内部的错误编号。本人从没见过公开文档记录SQL Agent的错误编号。
[100] Microsoft SQLServerAgent 版本 10.50.1600.1 (内部版本号 x86 unicode 零售): 进程 ID 5280
这是一条非常有用的信息。SQL Server代理版本号(即版本、服务包、和修补程序)。在此例中,它是SQL Server 2008 R2,采用sp1更新包。你可以在SQLServerCentral找到版本号。
接下来的事情是,这是一个SQL Server x86版本(即32位),这是一个标准的零售版本的产品。最后,对SQL Server代理服务的Windows进程ID标识。如果你使用Windows故障排除工具(即使是简单的任务管理器),你会看到一个进程ID,这将帮助你把SQL Server代理服务关联到Windows信息。在图5.6中
图5.6 任务管理器中的进程
[101] SQL Server USER-67NP5R8LGK\SQL08R2 版本 10.50.1600 (连接限制: 0)
这一消息标识SQL服务器的名称(USER-67NP5R8LGK\SQL08R2),以及SQL Server的版本号。注意“0连接限制”--即是没有特定的配置,因此允许无限的连接(直到耗尽内存)。
[102] SQL Server ODBC 驱动程序版本 10.50.1600
[103] 驱动程序使用的 NetLib 是 DBNETLIB.DLL;本地主机服务器是 USER-67NP5R8LGK\SQL08R2
这两则消息表明使用ODBC的版本号(SQL Server代理使用ODBC连接回SQL服务器本地副本,事实上,它是用当地的DBNETLIB.DLL为连接。
[310] 检测到 4 个处理器和 3018 MB RAM
[339] 本地计算机是 USER-67NP5R8LGK,运行的是 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] SQLAgent$SQL08R2 在 Windows NT 服务控制下启动
这个消息表明,SQL Server代理作为服务启动,而不是在命令提示符窗口。
[260] 无法启动邮件会话(原因: 没有定义邮件配置文件)
[355] 邮件系统初始化失败;请检查配置设置
这些消息表明在数据库邮件配置中出错。回顾第四篇数据库邮件,查看是否有类似的问题。
[396] 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
这条警告表明一个SQL Server代理设置没有配置,可能阻止某些作业运行。你可以设置作业在CPU“空闲”时运行(在第一篇提到过)。然而,在这个系统中空闲的定义还没有被设置。在SSMS配置此选项,右击SQL Server代理,选择属性,然后单击高级选项卡。配置空闲CPU条件如图5.7所示
图5.7 设置空闲CPU条件
你可以想象,在你的SQL Server代理错误日志还会有许多其他的错误,你应该定期检查日志。请牢记,代理日志不是用来排查作业故障的,你需要查看每个失败作业步骤的历史记录。我们在后续章节会做更多的故障排除。
配置SQL Server代理错误日志
您可以在SSMS中配置一些SQL Server代理错误日志的属性,另一些属性需要使用注册表编辑器(这是不支持的,所以不建议在生产系统)。
右击SSMS中SQL Server代理->错误日志,你会看到一组选项。首先是“配置”,选择该选项,你会看到类似图5.8。你可以更改SQL Server代理错误日志文件的存放位置(不推荐),同样可以更改代理日志级别。这些设置不能凭直观分辨–如果你勾选“错误”,你会看到错误和信息性消息。如果你勾选“警告”,你会看到警告和信息性消息。如果你只勾选信息,在错误日志中你看不到任何错误或警告消息。
对话框中另一选项是,写入OEM错误日志,意味着写一个非Unicode的错误日志文件。理论上你可以通过它节省空间,但也不推荐。
图5.8 配置SQL Server代理错误日志
退出图5.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,如图5.9所示
图5.9 SQL Server代理注册表项
如果你的SQL Server代理配置真的有问题时,可能需要描述(或导出)这些设置给产品支持。
下一篇
SQL Server代理错误日志包含很多有用信息(SQL Server代理,SQL Server和Windows服务器)。你可以使用错误日志解决SQL Server代理服务中的错误,并了解日志中常见的信息。本文还介绍了如何解决SQL Server代理中一些最常见的错误。
有了前面的SQL Server代理基础知识,第六篇将深入挖掘SQL Server代理作业步骤和工作流。
第五篇 SQL Server代理理解代理错误日志的更多相关文章
- 2. SQL Server数据库状态监控 - 错误日志
原文:2. SQL Server数据库状态监控 - 错误日志 无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯 ...
- 【译】第五篇 SQL Server代理理解代理错误日志
本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...
- 第五篇 SQL Server安全架构和安全
本篇文章是SQL Server安全系列的第五篇,详细内容请参考原文. 架构本质上是一个数据库对象,其他对象的一个容器,在复杂的数据库中它能够很容易的管理各组对象.架构具有重要的安全功能.在这一篇你会学 ...
- 【译】第五篇 SQL Server安全架构和安全
本篇文章是SQL Server安全系列的第五篇,详细内容请参考原文. 架构本质上是一个数据库对象,其他对象的一个容器,在复杂的数据库中它能够很容易的管理各组对象.架构具有重要的安全功能.在这一篇你会学 ...
- 第十篇 SQL Server代理使用代理帐户
本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...
- 第九篇 SQL Server代理了解作业和安全
本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...
- 第八篇 SQL Server代理使用外部程序
本篇文章是SQL Server代理系列的第八篇,详细内容请参考原文 在这一系列的上一篇,学习了如何用SQL Server代理作业活动监视器监控作业活动和查看作业历史记录.在实时监控和管理SQL Ser ...
- 第六篇 SQL Server代理深入作业步骤工作流
本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...
- 【译】第十篇 SQL Server代理使用代理帐户
本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...
随机推荐
- 【iBoard电子学堂】【iCore双核心板】资料光盘A盘更新,版本号为A6
_____________________________________ 深入交流QQ群: A: 204255896(1000人超级群,可加入) B: 165201798(500人超级群,满员) C ...
- OpenCV学习笔记——点击显示鼠标坐标
点击显示鼠标显示坐标,再次点击时上一次的坐标的会消失…… #include<highgui.h> #include<cv.h> void on_mouse(int event, ...
- 前端编码风格规范(3)—— JavaScript 规范
JavaScript 规范 全局命名空间污染与 IIFE 总是将代码包裹成一个 IIFE(Immediately-Invoked Function Expression),用以创建独立隔绝的定义域.这 ...
- Gitolite配置管理和GIT基本操作
简述公司版gitolite的项目配置与管理 1. 基于秘钥对的管理 1.1 客户端(需要访问代码库的机器)生成秘钥对,采用RSA加密ssh-keygen -t rsa -f path_to_store ...
- twitter storm源码走读之6 -- Trident Topology执行过程分析
欢迎转载,转载请注明出处,徽沪一郎. TridentTopology是storm提供的高层使用接口,常见的一些SQL中的操作在tridenttopology提供的api中都有类似的影射.关于Tride ...
- HTTP 笔记与总结(9)分块传输、持久链接 与 反向 ajax(comet / server push / 服务器推技术)
反向 ajax 又叫 comet / server push / 服务器推技术 应用范围:网页聊天服务器,例如新浪微博在线聊天.google mail 网页聊天 原理:一般而言,HTTP 协议的特点是 ...
- ThinkPHP公共配置文件与各自项目中配置文件组合的方法
ThinkPHP公共配置文件与各自项目中配置文件组合的方法 文章TAG:thinkphp 公共配置文件 时间:2014-11-25来源:www.aspku.com 作者:源码库 文章热度: 146 ℃ ...
- Windows与Linux/Mac系统时间不一致的解决方法
Windows与Linux/Mac系统时间不一致的解决方法 分类: linux2012-02-12 14:25 1691人阅读 评论(1) 收藏 举报 windowsubuntusystemlinux ...
- vbaexcel
Sub WordTest() Dim objwordApp As Word.Application Dim objword As Word.Document Dim objSeheet As Stri ...
- NERDTree 快捷键辑录
参看连接:http://www.cnblogs.com/lexus/archive/2012/11/04/2753187.html http://yang3wei.github.io/blog/201 ...