【译】第五篇 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代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...
- 【译】第二篇 SQL Server安全验证
本篇文章是SQL Server安全系列的第二篇,详细内容请参考原文. 验证是检验主体的过程.主体需要唯一标识,那样SQL Server可以确定主体有哪些权限.正确的验证是提供安全访问数据库对象的必要的 ...
- 【译】第二篇 SQL Server代理作业步骤和子系统
本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...
- 【译】第一篇 SQL Server代理概述
本篇文章是SQL Server代理系列的第一篇,详细内容请参考原文. SQL Server代理是SQL Server的作业调度和告警服务,如果使用得当,它可以大大简化DBA的工作量.SQL Serve ...
- 【译】第五篇 SQL Server安全架构和安全
本篇文章是SQL Server安全系列的第五篇,详细内容请参考原文. 架构本质上是一个数据库对象,其他对象的一个容器,在复杂的数据库中它能够很容易的管理各组对象.架构具有重要的安全功能.在这一篇你会学 ...
- 第五篇 SQL Server安全架构和安全
本篇文章是SQL Server安全系列的第五篇,详细内容请参考原文. 架构本质上是一个数据库对象,其他对象的一个容器,在复杂的数据库中它能够很容易的管理各组对象.架构具有重要的安全功能.在这一篇你会学 ...
- 【译】第九篇 SQL Server安全透明数据加密
本篇文章是SQL Server安全系列的第九篇,详细内容请参考原文. Relational databases are used in an amazing variety of applicatio ...
随机推荐
- 数据输出保存生成word文档
ob_start(); //打开缓冲区 $header_str = '<html xmlns:o="urn:schemas-microsoft-com:office:office&qu ...
- django的第一个问题
/usr/local/lib/python2.7/dist-packages/allauth/account/utils.py in setup_user_email, line 258 /usr/l ...
- 移动端开发-viewport
1.viewport viewport 即设备 屏幕上显示网页的区域.因为移动设备屏幕比较小,为了能让移动设备能够显示更多内容,默认设置的viewport 并不是屏幕真是像素点的宽度,一般为980px ...
- 【JavaScript】JAVA-表格里的c:foreach使用及数字总计
两步:1.上图 2.上代码 <div class="group-accordion" collapsible="true" active="tr ...
- OSPF协议介绍及配置 (上)
OSPF协议介绍及配置 (上) 一.OSPF概述 回顾一下距离矢量路由协议的工作原理:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表,通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加 ...
- 【刷题】BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡
Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...
- 【BZOJ4522】密匙破解(Pollard_rho)
[BZOJ4522]密匙破解(Pollard_rho) 题面 BZOJ 洛谷 题解 还是\(Pollard\_rho\)的模板题. 呜... #include<iostream> #inc ...
- BZOJ 2959: 长跑 解题报告
2959: 长跑 Description 某校开展了同学们喜闻乐见的阳光长跑活动.为了能"为祖国健康工作五十年",同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑 ...
- bzoj 3209 bzoj1799 数位dp
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2267 Solved: 1040[Submit][Status][Disc ...
- duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性
转载请说明原出处,谢谢~~: 今天有朋友反映CTextUI控件无法设置宽度,于是修复了这个bug,顺便给Text控件增加了一个自动计算宽度的属性,描述如下 <Attribute name=&qu ...