我们有一台旧的SQL Server 2000机器,其中一堆作业在一夜之间运行。偶尔,执行服务器维护并重新启动计算机后,某些SQL组件不会提供操作系统(即使它们已配置为这样)。因此,在我们的夜间工作应该运行之前,我想(从远程计算机)运行一些检查来查看SQL Server,SQL Server代理和SQL Server OLAP服务是否正在运行。我发现了一些看起来应该起作用的东西,但我想知道这个社区的专家是否可以评论每种方法的可靠性。我可以将此应用程序编码为通过Windows计划任务运行的.vbs文件或创建C#Windows服务。查看SQL Server 2000进程是否正在运行的最佳方法?
候选人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#
这是真的只需要每天运行一次,如果任何应该运行的进程都没有发送电子邮件警报。
这个想法是,如果我不能连接到SQL数据库可言,它假定SQL Server未运行,因此SQLAgent也没有运行。所以我发出电子邮件警报。如果我可以连接到SQL数据库,则运行此存储过程并检查SQLAgent和MSSAS记录是否都返回。如果没有,我会发送一封电子邮件提醒您有哪些遗漏。 – jamauss 2010-03-31 17:59:09