我们有一台旧的 SQL Server 2000 机器,一堆作业在一夜之间运行。有时,在执行服务器维护并重新启动计算机后,某些 SQL 组件不会出现在操作系统中(即使它们被配置为这样做)。因此,在我们的夜间作业应该运行之前,我想(从远程计算机)运行一些检查以查看 SQL Server、SQL Server 代理和 SQL Server OLAP 服务是否正在运行。我发现了一些看起来应该可行的东西,但我想知道这个社区的专家是否可以评论每种方法的质量和可靠性。我可以将此应用程序编码为通过 Windows 计划任务运行的 .vbs 文件或创建 C# Windows 服务。
候选 1: 对 master..sysprocesses 执行查询,并在 program_name 列中查找我希望找到的各个进程。
候选 2: 对 master..xpcmd_shell 执行查询,如下所示:
exec master..xp_cmdshell 'sc \\hostname query SQLServerAgent'
然后在结果中寻找 'STATE : 4 RUNNING'
候选3: 使用.NET Framework,像这样搜索进程: Check if a process is running on a remote system using C#
这实际上只需要每天运行一次,如果任何应该运行的进程没有运行,它就会发送电子邮件警报。