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

SQL Serverエージェント(T-SQL)でスケジュールのリストを取得する4つの方法

    この記事では、T-SQLを使用してSQLServerエージェントジョブに関連付けられているスケジュールを返すための4つのオプションを紹介します。

    オプション

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

    • オプション1sp_help_jobを実行します ストアドプロシージャ。
    • オプション2sp_help_scheduleを実行します ストアドプロシージャ。
    • オプション3sp_help_jobscheduleを実行します ストアドプロシージャ。
    • オプション4sysschedulesをクエリします テーブル(およびsysjobschedulesと結合します およびsysjobs_view )。

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

    オプション1:sp_help_job ストアドプロシージャ

    sp_help_jobを呼び出すとき 引数なしで、単にジョブのリストを返します。ただし、ジョブの名前またはIDを渡すと、スケジュールなど、そのジョブの詳細が一覧表示されます。

    次に例を示します:

    USE msdb;
    EXEC sp_help_job 
    	@job_name = 'SqlAgentTest';

    結果:

    これにより、ジョブ、およびジョブステップ、スケジュール、およびターゲットサーバーが一覧表示されます。この場合、ジョブには2つのスケジュールが関連付けられています。

    IDを使用する場合のコードの例を次に示します。

    EXEC sp_help_job 
    	@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

    IDを使用する場合、必要に応じてパラメータ名を省略できます。

    例:

    EXEC sp_help_job '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';

    構文

    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_schedule ストアドプロシージャ

    sp_help_schedule ストアドプロシージャは、スケジュールを返すように特別に設計されています。

    引数を渡さずに実行すると、インスタンス内のすべてのスケジュールが返されます:

    EXEC sp_help_schedule;

    特定のスケジュールの情報を取得するには、スケジュールの名前またはIDのいずれかを渡します。

    EXEC sp_help_schedule
    	@schedule_name = 'Run_Sat_6AM';

    sp_help_schedule 特定のジョブのスケジュールを返すのではなく、ジョブに関連付けられているスケジュールのみを返すために使用できます。

    @attached_schedules_only パラメータはビットです 、デフォルトは0 、これは、アタッチされたスケジュールとアタッチされていないスケジュールの両方を返すことを意味します。 1の値を渡す 添付されたスケジュールのみに制限します。

    例:

    EXEC sp_help_schedule
    	@attached_schedules_only = 1;

    もう1つできることは、@include_descriptionを使用することです。 結果セットにスケジュールの説明を含めるかどうかを指定するパラメーター。

    sp_help_scheduleの使用を参照してください 詳細と例については、SQLServerを参照してください。

    オプション3:sp_help_jobschedule ストアドプロシージャ

    sp_help_jobschedule ストアドプロシージャは、ジョブのスケジューリングに関する情報を返します。

    例:

    EXEC sp_help_jobschedule
    	@job_name = 'SqlAgentTest';

    これにより、指定したジョブに関連付けられているスケジュールのリストが返されます。

    スケジュールのIDまたは名前を渡して、そのスケジュールだけを返すこともできます。

    sp_help_jobscheduleを呼び出すとき 、ジョブ名またはそのID(両方ではない)、またはスケジュールIDのいずれかを指定する必要があります。 schedule_nameを渡すこともできます ただし、ジョブIDまたはその名前との組み合わせのみです。

    受け入れられる引数の組み合わせは少し注意が必要です。 sp_help_jobscheduleの使用を参照してください 詳細な説明と例については、SQLServerを参照してください。

    オプション4:sysschedules テーブル(およびその他)

    sysschedulesをクエリできます テーブルを作成し、sysjobschedulesなどのテーブルと結合します およびsysjobs_view ジョブとそれに関連するスケジュールのリストを返します。

    例:

    SELECT
    	jv.name,
    	jv.description,
    	s.schedule_id,
    	s.name,
    	s.freq_type,
    	s.freq_interval,
    	s.freq_subday_type,
    	s.freq_subday_interval,
    	js.next_run_date,
    	js.next_run_time
    FROM msdb.dbo.sysjobs_view jv
    INNER JOIN msdb.dbo.sysjobschedules js
    ON jv.job_id = js.job_id
    INNER JOIN msdb.dbo.sysschedules s
    ON s.schedule_id = js.schedule_id
    ORDER BY jv.name, s.name;

    結果:

    この場合、内部結合を使用して、関連するジョブを持つスケジュールのみを返し、その逆も同様です。

    右結合に切り替えて、ジョブに関連付けられているかどうかに関係なくすべてのスケジュールを返すか、左結合に切り替えて、スケジュールが関連付けられているかどうかに関係なく、すべてのジョブを返すことができます。または、完全な結合を使用して、単にすべてを返すこともできます。


    1. GUIを使用してMySQLWorkbenchでデータベースを作成する方法

    2. プレーンADOを使用してSQLServerからビュー定義を取得する方法はありますか?

    3. ハイブリッドクラウドにデプロイされたPostgreSQLのディザスタリカバリオプション

    4. MariaDBでのCHAR()のしくみ