古い SQL Server 2000 マシンがあり、一晩中一連のジョブが実行されています。サーバーのメンテナンスが実行され、マシンが再起動された後、一部の SQL コンポーネントが (そのように構成されていても) OS を起動しないことがあります。したがって、夜間のジョブを実行する前に、(リモート マシンから) 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 を使用して、次のようにプロセスを検索します。 C# を使用してリモート システムでプロセスが実行されているかどうかを確認します。
これは実際には 1 日に 1 回だけ実行する必要があるものであり、実行されるべきプロセスのいずれかが実行されていない場合に電子メール アラートを送信します。