首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监控SQLAgent

监控SQLAgent
EN

Database Administration用户
提问于 2014-09-04 14:54:14
回答 3查看 388关注 0票数 4

我检测到SQLAgent没有在我们的服务器上运行,原因是一个意外的内存泄漏错误导致SQLAgent关闭。没有配置警报,因此应该运行的一个主要作业没有配置。是否有方法从Server本身监视SQL代理?

我做了很多搜索,但找不到方法。我发现了很多关于监视作业、计划等的内容,但没有发现如何监视SQL代理是否停止工作、不会重新启动或任何类似的阻止其运行的方法。

PS:我打算问另一个关于内存泄漏问题的问题

EN

回答 3

Database Administration用户

回答已采纳

发布于 2014-09-04 15:13:30

您可以做的是将下面的脚本存储在服务器上,或者将其作为存储过程:

在sqlcmd下面使用

代码语言:javascript
复制
IF EXISTS (  SELECT 1 
           FROM MASTER.dbo.sysprocesses 
           WHERE program_name = N'SQLAgent - Generic Refresher')
BEGIN
   SELECT @@SERVERNAME AS 'InstanceName', 1 AS 'SQLServerAgentRunning'
END 
ELSE 
BEGIN
EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'databaseMail test profile',  --<-- Change HERE !!
    @recipients = 'databaseteam@somecompany.com', --<-- Change HERE !!
    @body = 'Please check the status of SQL Agent. It is not running !',
    @query = 'SELECT @@SERVERNAME AS [InstanceName], 0 AS [SQLServerAgentRunning]',
    @subject = 'SQL Agent is not running',
    @attach_query_result_as_file = 0 ; -- set it to 1 to receive as txt file attachment
END

你能做些什么来缓解它:

票数 4
EN

Database Administration用户

发布于 2014-09-04 15:06:09

除了在另一台服务器上设置单独的进程之外,您唯一的选择是配置特定服务的恢复操作。这是在Windows端完成的,而不是在Server上完成的。有些人会让它运行一个程序/批处理文件来拍摄电子邮件或其他类似的东西。这取决于你。

总之,如果我没有适当的监控来处理这个问题,我会说,只需构建一个小的PowerShell脚本,如果在服务器上发现服务时,它只发送电子邮件,然后在服务器上运行它并使用预定的任务运行它。添加上述恢复选项只在服务意外停止时,如果某个程序或脚本在您不知情的情况下优雅地关闭它,则不会覆盖。

票数 1
EN

Database Administration用户

发布于 2014-09-04 15:09:33

困难的方法是构建一个监视SQL活动的扩展事件(它定期运行存储过程以检查需要运行的作业),并通知如果没有发生这种情况。问题是,您需要某种预定的执行工具来运行它,这正是您使用SQLAgent所做的。如果您打算使用windows调度器作为预定的执行工具,那么最好只编写一些powershell来查看服务是否正在运行。

更好的方法可能是绑定到服务监视系统(PRTG、system等),并使用它来监视您的服务。使用服务来监控自己是一个鸡与蛋的问题。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/75721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档