【发布时间】:2010-03-29 17:55:26
【问题描述】:
我们有一台旧的 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#
这实际上只需要每天运行一次,如果任何应该运行的进程没有运行,它就会发送电子邮件警报。
【问题讨论】: