热门标签 | 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,如需转载请自行联系原作者


推荐阅读
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 安装 IIS 5.1 并注册 .NET 2.0 后,访问页面时出现 500 错误。本文提供详细的步骤和解决方案,帮助您解决该问题。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • C# 中 SQLite 报错:在 "\\s\\" 附近出现语法错误,如何解决? ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • Nginx 反向代理配置与应用指南
    本文详细介绍了 Nginx 反向代理的配置与应用方法。首先,用户可以从官方下载页面(http://nginx.org/en/download.html)获取最新稳定版 Nginx,推荐使用 1.14.2 版本。下载并解压后,通过双击 `nginx.exe` 文件启动 Nginx 服务。文章进一步探讨了反向代理的基本原理及其在实际应用场景中的配置技巧,包括负载均衡、缓存管理和安全设置等,为用户提供了一套全面的实践指南。 ... [详细]
  • Windows环境下RabbitMQ安装详尽指南
    Windows环境下RabbitMQ安装详尽指南 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
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社区 版权所有