我检测到 SQLAgent 没有在我们的一台服务器上运行,这是由于意外的内存泄漏错误导致 SQL Agent 关闭。没有配置警报,因此没有应该在那里运行的一项主要工作。有没有办法从 SQL Server 本身监视 SQL Agent?
我做了很多搜索,但找不到方法。我发现了很多关于监控作业、计划等的信息。但不是如何监控 SQL 代理是否停止工作、不重新启动或任何类似的阻止它运行的东西。
PS:我打算再问一个关于内存泄漏问题的问题
我检测到 SQLAgent 没有在我们的一台服务器上运行,这是由于意外的内存泄漏错误导致 SQL Agent 关闭。没有配置警报,因此没有应该在那里运行的一项主要工作。有没有办法从 SQL Server 本身监视 SQL Agent?
我做了很多搜索,但找不到方法。我发现了很多关于监控作业、计划等的信息。但不是如何监控 SQL 代理是否停止工作、不重新启动或任何类似的阻止它运行的东西。
PS:我打算再问一个关于内存泄漏问题的问题
您可以做的是将以下脚本存储在您的服务器上或将其作为存储过程:
在下面与 sqlcmd 一起使用
你可以做些什么来缓解它:
除了在另一台服务器上设置单独的进程之外,您唯一的选择是为特定服务配置恢复操作。这是在 Windows 端完成的,而不是 SQL Server。有些人会让它运行一个程序/批处理文件来发送电子邮件或其他类似的东西。它是由你决定。
总的来说,如果我没有适当的监控来处理这个问题,我会说只构建一个小的 PowerShell 脚本,如果在服务器上运行并使用计划任务运行它时,如果在任何地方发现该服务,它只发送一封电子邮件。添加上述恢复选项仅适用于服务意外停止的情况,如果运行某些程序或脚本在您不知情的情况下正常关闭它,则不会包括在内。
困难的方法是构建一个扩展事件来监视 SQL 代理活动(它定期运行存储过程以检查需要运行的作业)并在没有发生时发出通知。问题是您需要某种计划的执行工具来运行它,这就是您使用 SQLAgent 所做的。而且,如果您打算使用 Windows 调度程序作为计划执行工具,最好只编写一些 powershell 来查看服务是否正在运行。
更好的方法可能是绑定到服务监控系统(PRTG、System Center 等)并使用它来监控您的服务。使用服务来监控自身是先有鸡还是先有蛋的问题。