sql >> データベース >  >> RDS >> Sqlserver

SQL Serverエージェントジョブのリストを返す3つの方法(T-SQL)

    多くの場合、SQL Serverエージェントジョブのリストを取得する最も簡単な方法は、SSMSオブジェクトエクスプローラーでSQLServerエージェントノードを展開することです。

    しかし、それが唯一の方法ではありません。また、環境によっては、オプションではない場合もあります。 SSMSまたはSQLServerエージェントジョブを表示できるデータベースツールがない場合は、代わりにT-SQLを使用する必要があります。

    この記事では、T-SQLを使用するときにSQLServerエージェントジョブのリストを返すための3つのオプションを紹介します。

    オプション

    次のオプションを使用して、T-SQLでSQLServerエージェントジョブのリストを返すことができます。

    • オプション1sp_help_jobを実行します ストアドプロシージャ。
    • オプション2sysjobs_viewをクエリします ビュー。
    • オプション3sysjobsをクエリします 直接テーブル。

    これらのオプションはすべてmsdbにあります したがって、そのデータベースで実行する必要があります。 msdbに切り替えることでそれを行うことができます 最初にデータベースを作成するか、オブジェクトを適切に修飾します(例:msdb.dbo.sysjobs_view

    オプション1:sp_help_job

    sp_help_jobを使用する場合 SQL Serverエージェントジョブのリストを返すには、引数なしで実行するだけです。

    このように:

    USE msdb;
    EXEC sp_help_job;

    この場合、 msdbに切り替えました データベースを最初に使用します。つまり、データベース名とスキーマでプロシージャを完全に修飾する必要はありませんでした。

    SSMSを使用してテスト環境で実行すると次のようになります。

    特定のジョブを返す

    同じストアドプロシージャを使用して、これらのジョブのいずれかの詳細を返すことができます。これを行うと、すべてのジョブを一覧表示する場合よりもはるかに詳細な情報が得られます。

    仕事の詳細を取得するには、仕事の名前または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:sysjobs_view 表示

    sysjobs_viewを使用できます SQLServerエージェントジョブのリストを返します。

    例:

    SELECT * FROM msdb.dbo.sysjobs_view;

    この場合、ビュー名をデータベースとスキーマで修飾しました。

    このビューは、sp_help_jobと同様の(ただしわずかに異なる)結果セットを返します。 引数なしで使用した場合のストアドプロシージャ。

    ステップやスケジュールなどのジョブの詳細が必要な場合は、sysjobstepsなどの他のテーブルと結合する必要があります 、sysjobschedulessysjobactivitysysjobhistory 、など。

    これは、sysjobstepsと結合する例です。 テーブル:

    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というジョブの列 )。

    ステップのあるジョブだけに制限するには、内部結合を使用します。

    オプション3:sysjobs

    sysjobsに直接移動する例を次に示します。 テーブル:

    SELECT * FROM msdb.dbo.sysjobs;

    ビューと同様に、ステップやスケジュールなどのジョブの詳細が必要な場合は、sysjobstepsなどの他のテーブルと結合する必要があります。 、sysjobschedulessysjobactivitysysjobhistory 、など。

    通常、テーブルを直接クエリするのではなく、ビューをクエリすることをお勧めします。


    1. OracleのOVER句

    2. MySQLのforループの例

    3. PerconaDBとは

    4. Javaを使用してPostgreSQLデータベースの既存のデータベースから新しいXMLファイルを作成するにはどうすればよいですか?