SQL Server代理启动自我终止


9

在过去的一个月中,我的一台服务器遇到了SQL Server代理问题。它会自动停止并显示以下错误,该错误随机发生:

SQL代理输出文件
[097]检测到内存泄漏[204字节]
在文件e:\ sql9_sp2_t \ sql \ komodo \ src \ core \ sqlagent \ src \ alerter.cpp的第403行捕获到异常5。SQLServerAgent启动自我终止

我用谷歌搜索了这个错误,但是没有得到太多的信息。SQL Server和代理都使用相同的域帐户运行。但是,问题仅在于SQL Server代理服务。

我也无法在SQL Server配置管理器中看到SQL Server代理服务。我检查了SQL Server错误日志和Windows Event Viewer日志,但没有看到任何可疑活动。

我的内存设置配置正确。该服务器具有32GB RAM,并且SQL Server已分配为使用最大26GB的内存。

系统细节:

  • SQL Server 2012 SP2标准版11.0.5058 64位
  • Windows Server 2008 R2 Ent Edition 64位
  • 专用于SQL Server(服务器上没有其他运行的应用程序)
  • 几个月前,服务器已从SQL Server 2005 EE升级到2012 SE。
  • 我们没有使用事件转发服务器

我也检查了msdb数据库。对它运行checkdb,它成功完成,没有任何错误。我需要您的帮助来解决两件事:

  1. 修复SQL Server代理服务的随机停止
  2. 在SQL Server配置管理器中添加SQL Server代理服务

我们有用于监视的第三方软件,因此如果代理服务停止,我们会立即得到通知。目前,我们只是重新启动服务。但是我们想找到根本原因。

我运行了Sean Gallardy建议的以下查询,并返回了95行。我不知道如何解释结果。

select * 
from sys.dm_os_loaded_modules 
where name not like '%microsoft%'

不幸的是,出于安全原因,我无法发布结果。

在找到解决此问题的方法之前,我已经向SQL Server代理添加了重试尝试,以便它在停止时可以自动重新启动。


当代理被杀死时,您是否能够进入服务器并检查页面文件的使用情况?关于此的连接项是由各种应用程序(包括HyperBac)耗尽页面文件引起的。
Cody Konior '16

再次发生时,我会检查一下。
SQLPRODDBA '16

从SQL Server 2005 EE升级到SQL Server 2012 SE时,是否进行了升级?还是您进行了全新的SQL Server安装?我问,因为在2000年代初,就地升级导致了几次失败,这些失败通过完全删除文件夹并将SQL Server重新安装到一个空文件夹来解决。(是的,这很麻烦。)
RLF

Answers:


1

自从您几个月前从SQL Server 2005 EE升级到2012 SE以来,您应该保存并清除事件日志,因为SqlAgent在从较早版本的SQL Server中看到事件日志ID时可能会崩溃。例如,代理可能会崩溃,因为它会比当前版本更早地读取由SQL Server生成记录的事件,该事件仅包含带有一个插入字符串的数据,并且代理将尝试使用需要两个字符串的最新资源信息来格式化它。这将导致短暂的内存泄漏,因为它会在崩溃发生时为其尝试打印到的字符串分配一个缓冲区,从而在关闭之前就导致短暂的内存泄漏。

至于未在配置管理器中列出的代理服务,有多种可能性:https : //support.microsoft.com/en-us/kb/941823

确保您正在运行2012 Configuration Manager

您可以尝试重建WMI存储库:https : //blogs.technet.microsoft.com/askperf/2009/04/13/wmi-rebuilding-the-wmi-repository/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.