1

Server.JobServer.jobs を使用してジョブのリストを取得する SMO オブジェクトを使用すると、各ジョブのステータスを確認できます。現在実行中のものについては、実行中の SPID を見つけたいと思います。Server.EnumProcesses() を使用して、サーバーのプロセスのリストを取得することもできます。これにより、現在アクティブな SPID のリストが表示されます。2つ合わせたい。

私が思いついた最善の方法は、jobid を文字列に変換し、EnumProcesses テーブルのプログラム文字列から jobId をサブストリング化することです (少なくとも私のシステムでは、この説明に jobId が埋め込まれています)。プログラム記述の Guid と jobID の GUID で、文字列表現の最初の 3 つの部分でバイトが入れ替わっているといういくつかの理由で、これは本当に醜いです。うん。

SMO を使用してそれを行うより良い方法はありますか?

4

2 に答える 2

1

私が知っていることではありませんが、SMOを使用しています。

T/SQL を使用してこれを行いました。job_id 値を取得し、varbinary にキャストします。これは、アプリケーション名の値 (「SQL Agent」部分の後) と一致する必要があります。

于 2009-01-06T08:25:16.443 に答える
1

SP_who2 を使用すると、結果の「Program」フィールドに SQLAgent-Jobid が表示されます。MSDB テーブルの sysjobs から jobID を取得します。これで、ジョブの sp_id を取得できます

于 2013-02-07T06:05:48.643 に答える