SQL Server代理是全部实时数据库的核心。代理有不少不明显的用法,所以系统的知识,对于开发人员仍是DBA都是有用的。这系列文章会通俗介绍它的不少用法。sql
如咱们在这个系列的前几篇文章所见,SQL Server代理是由一系列的做业步骤组成,每一个步骤是不一样类型将要进行的工做。若是你在第4篇所见,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错误日志。缓存
当你首次浏览到\MSSQL目录,并尝试查看日志目录,极可能你须要请求提高你的权限来得到访问这个目录的权限。默认状况下,SQL Server和SQL Server代理的服务帐号有这个目录的读写权限,但你(使用用户帐号)不能访问。若是你是本地管理员,你能够受权本身访问后,直接查看日志文件。如图1所示,默认的权限和安全设置是这样的。不要从目录里移除你服务帐号的权限,不然SQL Server和SQL Server代理会不能正常工做。安全
插图1:SQL Server的Log目录权限服务器
一旦你在\MSSQL\LOG目录里,对于SQL Server和SQL Server代理,你都会看到不少日志文件,原先的日志文件(只要正常启动服务,每次都会建立)也在目录里。SQLAGENT.OUT文件是SQL Server代理的当前日志文件,所以这是你要打开的文件。默认状况下,当你尝试打开这个文件时,你须要选择打开这个后缀为.OUT文件的默认程序。记事本就能够,当你有另外一个喜爱,你能够选择这个扩展文件名的文本查看器(如图2所示,选择记事本)。编辑器
插图2:.OUT文件用记事本打开。工具
一旦选择后,SQLAGENT.OUT文件会打开,如插图3所示。sqlserver
插图3:SQL Server代理错误日志(SQLAGENT.OUT)spa
你很容易发现,应该有更好的方式查看错误日志,没错!SSMS有日志文件查看器,这在第4篇数据库邮件里就已经简单介绍了。切换到错误日志,展开SQL Server代理文件夹,错误日志文件夹,你会看到当前SQL Server代理的日志还有最近的日志。双击【当前】(或右击选择【查看代理日志】)你会看到SQL Server日志查看器,在查看器里当前SQL Server代理的错误日志已被勾选(如插图4所示)。3d
插图4:当前SQL Server代理日志文件的日志文件查看器
这和在插图3里显示的日志文件同样,但看起来更直观,更好管理。首先你会注意到的是如今事件分为:信息,警告和错误。使用筛选按钮(如插图5),你能够增长本身的筛选条件来限制SQL Server代理错误日志的项目(或SQL Server的任何错误日志,你已经看到,在日志文件查看器里,你能够看到全部的日志)
插图5:日志文件查看器的筛选设置
在SQL Server代理日志的开始就有信息消息。咱们每步都过一遍,简单介绍下消息的意思。
SQL Server代理服务已经启动,但还不能配置和运行它,由于msdb数据库还不可用。SQL Server代理的大部分配置和设置都保存在msdb。部分配置细信息保存在系统注册表里。SQL Server不能启动直到msdb数据库恢复。消息前的数字(393)是SQL Sever代理的内部信息号,本人从没见过公开文档记录SQL Agent的错误编号。
这是一条很是有用的信息。SQL Server代理版本号(即版本、服务包、和修补程序)。在此例中,它是SQL Server 2008 R2,采用sp1更新包。你能够在SQLServerCentral找到版本号。
接下来的事情是,这是一个SQL Server x86版本(即32位),这是一个标准的零售版本的产品。最后,对SQL Server代理服务的Windows进程ID标识。若是你使用Windows故障排除工具(即便是简单的任务管理器),你会看到一个进程ID,这将帮助 你把SQL Server代理服务关联到Windows信息。
插图6:有PID列显示的任务管理器
这一消息标识SQL服务器的名称(PC201510181429),以及SQL Server的版本号。注意“0链接限制”--便是没有特定的配置,所以容许无限的链接(直到耗尽内存)。
这两则消息代表使用ODBC的版本号(SQL Server代理使用ODBC链接回SQL服务器本地副本,事实上,它是用当地的DBNETLIB.DLL为链接。
接下来的两行显示的SQL服务器CPU和内存配置,以及Windows版本。
这是第二篇(SQL Server代理做业步骤和子系统)讨论过的SQL Server代理子系统。做业下有各类类型能够运行子系统(如CmdExec、ActiveX 脚本)以及一些支持复制,分析服务的子系统,你能够在msdb.dbo.syssubsystems表中查看子系统清单。
虽然这个归类为一个错误,在大部分系统上你能够安全地忽略。Net send通知,已经从SQL Server的几个版本中取消,而且相关的Windows服务默认不是开启的。若是你还在使用Net send消息,看到了这样的错误,你须要更改Windows Messenger服务为自动启动。
这个消息代表,SQL Server代理做为服务启动,而不是在命令提示符窗口。
这些消息代表在数据库邮件配置中出错。回顾第四篇数据库邮件,查看是否有相似的问题。
这条警告代表一个SQL Server代理设置没有配置,可能阻止某些做业运行。你能够设置做业在CPU“空闲”时运行(在第一篇提到过)。然而,在这个系统中空闲的定义尚未被 设置。在SSMS配置此选项,右击SQL Server代理,选择属性,而后单击高级选项卡。配置空闲CPU条件如插图7所示
插图7:配置空闲CPU条件
你能够想象,在你的SQL Server代理错误日志还会有许多其余的错误,你应该按期检查日志。请牢记,代理日志不是用来排查做业故障的,你须要查看每一个失败做业步骤的历史记录。咱们在后续章节会作更多的故障排除。
您能够在SSMS中配置一些SQL Server代理错误日志的属性,另外一些属性须要使用注册表编辑器(这是不支持的,因此不建议在生产系统)。
右 击SSMS中SQL Server代理->错误日志,你会看到一组选项。首先是“配置”,选择该选项,你会看到相似插图8。你能够更改SQL Server代理错误日志文件的存放位置(不推荐),一样能够更改代理日志级别。这些设置不能凭直观分辨–若是你勾选“错误”,你会看到错误和信息性消 息。若是你勾选“警告”,你会看到警告和信息性消息。若是你只勾选信息,在错误日志中你看不到任何错误或警告消息。
对话框中另外一选项是,写入OEM错误日志,意味着写一个非Unicode的错误日志文件。理论上你能够经过它节省空间,但也不推荐。
插图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所示
插图9:SQL Server代理的注册表项
若是你的SQL Server代理配置真的有问题时,可能须要描述(或导出)这些设置给产品支持。
SQL Server代理错误日志包含不少有用信息(SQL Server代理,SQL Server和Windows服务器)。你可使用错误日志解决SQL Server代理服务中的错误,并了解日志中常见的信息。本文还介绍了如何解决SQL Server代理中一些最多见的错误。
有了前面的SQL Server代理基础知识,第六篇将深刻挖掘SQL Server代理做业步骤和工做流。
原文连接:http://www.sqlservercentral.com/articles/Stairway+Series/72456/