この記事では、T-SQLを使用するときにSQLServerエージェントジョブのステップを返すための3つのオプションを紹介します。
オプション
次のT-SQLオプションを使用して、SQLServerエージェントジョブのステップを返すことができます。
- オプション1 :
sp_help_job
を実行します ストアドプロシージャ。 - オプション2 :
sp_help_jobstep
を実行します ストアドプロシージャ。 - オプション3 :
sysjobsteps
をクエリします テーブル(およびsysjobs_view
と結合します もし必要なら)。
これらのオプションはすべてmsdbにあります したがって、そのデータベースで実行する必要があります。 msdbに切り替えることでそれを行うことができます 最初にデータベースを作成するか、オブジェクトを適切に修飾します(例:msdb.dbo.sysjobsteps
。
オプション1:sp_help_job
sp_help_job
を呼び出すとき 引数なしで、単にジョブのリストを返します。ただし、ジョブの名前またはIDを渡すと、そのジョブの詳細(ステップを含む)が一覧表示されます。
次に例を示します:
EXEC sp_help_job
@job_name = 'SqlAgentTest';
結果:
これにより、ジョブ、およびジョブステップ、スケジュール、ターゲットサーバーが一覧表示されます。
IDを使用する場合のコードの例を次に示します。
EXEC sp_help_job
@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';
IDを使用する場合、必要に応じてパラメータ名を省略できます。
例:
EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';
構文
sp_help_job
の完全な構文 このようになります:
sp_help_job { [ @job_id = ] job_id
[ @job_name = ] 'job_name' }
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] 'login_name' ]
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @category_name = ] 'category' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] status ]
[ , [ @date_comparator = ] 'date_comparison' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_modified ]
[ , [ @description = ] 'description_pattern' ]
sp_help_job
については、Microsoftのドキュメントを参照してください。 各パラメータの説明と、それぞれが受け入れる値について説明します。
オプション2:sp_help_jobstep
sp_help_jobstep
ストアドプロシージャは、ジョブのステップを返すように特別に設計されています。しかし、それがすべてを返します。
したがって、スケジュールやターゲットサーバーの内容などを表示したくない場合は、これが探しているものである可能性があります。
sp_help_jobstep
を渡すことができます ジョブ名またはそのID(両方ではない)。
次に例を示します:
EXEC sp_help_jobstep
@job_name = 'SqlAgentTest';
そして、2段階のジョブでの結果は次のようになります。
特定のステップのみを返す場合は、ステップIDを指定することもできます。ただし、どのジョブを対象とするかを(IDまたは名前で)指定する必要があります。
ジョブの2番目のステップを指定する例を次に示します。
EXEC sp_help_jobstep
@job_name = 'SqlAgentTest',
@step_id = 2;
ステップIDは、そのジョブに対して実際に存在する必要があります。たとえば、3
のステップIDを指定します 上記のジョブの場合、エラーが発生します。
オプション3:sysjobsteps
表
もう1つのオプションは、sysjobsteps
に対してクエリを実行することです。 テーブル。
この表にはすべてのジョブのステップが含まれているため、特定のジョブのステップのみが必要な場合は、ジョブIDを渡す必要があります。
sysjobsteps
にクエリを実行する例を次に示します。 特定の仕事のステップの表:
SELECT * FROM msdb.dbo.sysjobsteps
WHERE job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
これにより、sp_help_jobstep
と同様の結果が返されます。 手順。
ジョブの詳細の一部(名前など)を返す場合は、sysjobsteps
間で結合を実行できます。 およびsysjobs_view
。
例:
SELECT
jv.name,
jv.description,
jv.start_step_id,
js.step_id,
js.step_name
FROM msdb.dbo.sysjobs_view jv
LEFT JOIN msdb.dbo.sysjobsteps js
ON jv.job_id = js.job_id;
テスト環境での結果は次のとおりです。
これは左結合であるため、ステップがないジョブが含まれます(NULL
を参照) step_id
で およびstep_name
TestJob
というジョブの列 )。
ステップのあるジョブだけに制限するには、内部結合を使用します。