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

SQL Serverエージェントジョブの変更(T-SQL)

    SQL Serverでは、sp_update_jobを使用できます 既存のSQLServerエージェントジョブを変更するためのストアドプロシージャ。

    この例では、ジョブを作成してから、sp_update_jobを使用します。 そのジョブを変更します。

    ジョブを作成する

    まず、ジョブを作成します:

    USE msdb;  
    GO  
    EXEC sp_add_job  
        @job_name = N'BakMovies',
        @description = N'Backup the Movies database.',
        @category_name = 'Database Maintenance';
    GO  
    EXEC sp_add_jobstep  
        @job_name = N'BakMovies',  
        @step_name = N'Run the backup',  
        @subsystem = N'TSQL',  
        @command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
        @retry_attempts = 5,  
        @retry_interval = 5;
    GO
    EXEC sp_add_schedule 
        @schedule_name = N'Run_Sat_5AM',
        @freq_type = 8,
        @freq_interval = 64,
        @freq_recurrence_factor = 1,
        @active_start_time = 050000;
    GO  
    EXEC sp_attach_schedule  
       @job_name = N'BakMovies',  
       @schedule_name = N'Run_Sat_5AM';
    GO  
    EXEC sp_add_jobserver  
        @job_name = N'BakMovies';
    GO

    上記のコードは5つのストアドプロシージャを使用していますが、sp_update_job プロシージャは、sp_add_jobで作成された詳細のみを更新します 手順。他の手順には、独自の一致する「更新」手順があります。

    明確にするために、次の部分はsp_update_jobで更新できる部分です。 手順。

    EXEC sp_add_job  
        @job_name = N'BakMovies',
        @description = N'Backup the Movies database.',
        @category_name = 'Database Maintenance';

    この場合、ジョブを作成するときに3つの引数のみを提供しました。プロシージャは実際にはそれ以上のものを受け入れますが、必要な引数はジョブの名前だけです。

    ジョブを更新する

    これで、sp_update_jobを使用できます 上記のジョブを変更します。

    EXEC sp_update_job  
        @job_name = N'BakMovies',
        @new_name = N'BackupMoviesDB',
        @description = N'Backup the Movies database.',
        @category_name = 'Database Maintenance';

    この例で行うのは、ジョブの名前を変更することだけです。

    sp_update_job ストアドプロシージャは、パラメータ値が指定されている設定のみを変更します。パラメータを省略すると、現在の設定が保持されます。

    したがって、この場合、説明とカテゴリ名を省略できます。

    EXEC sp_update_job  
        @job_name = N'BakMovies',
        @new_name = N'BackupMoviesDB';

    ジョブを無効にする

    @enabledを設定すると、ジョブを無効にできます 0へ :

    EXEC sp_update_job  
        @job_name = N'BackupMoviesDB',
        @new_name = N'BackupMoviesDB (DISABLED)',
        @enabled = 0;

    この例では、ジョブが無効になっていることを明確にするために、ジョブの名前も変更しました。

    ジョブを確認する

    sp_help_jobを使用できます ジョブの現在の設定を表示します。

    パラメータの有無にかかわらず使用できます。パラメータなしで使用すると、すべてのジョブが返されます。

    EXEC sp_help_job;

    1つのジョブの詳細のみを表示したい場合は、ジョブの名前またはIDを指定できます。

    このように:

    EXEC sp_help_job 
    	@job_name = 'BackupMoviesDB';

    SSMSで実行した場合の結果は次のようになります。

    ただし、名前を入力するときは、仕事に付けた名前を覚えておく必要があります。この場合、前の例(ジョブを無効にしたとき)の後にこの手順を実行すると、次のようにする必要があります。

    EXEC sp_help_job 
    	@job_name = 'BackupMoviesDB (DISABLED)';

    ただし、ジョブのIDは一定のままなので、ジョブの名前に関係なく使用できます。

    例:

    EXEC sp_help_job 
    	@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';

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

    例:

    EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';

    ジョブステップ、スケジュールなどはどうなりますか?

    ジョブを変更しても、そのジョブの手順とスケジュール情報が損なわれることはありません。変更を加えた後も、ジョブの手順とスケジュールはそのまま残ります。

    ステップやスケジュールを変更する必要がある場合は、それらに適切なストアドプロシージャを使用する必要があります(たとえば、sp_update_scheduleを使用します) スケジュールとsp_update_jobstepを更新します ジョブステップを更新します。

    完全な構文

    sp_update_jobの完全な構文 このようになります:

    sp_update_job [ @job_id =] job_id | [@job_name =] 'job_name'  
         [, [@new_name =] 'new_name' ]   
         [, [@enabled =] enabled ]  
         [, [@description =] 'description' ]   
         [, [@start_step_id =] step_id ]  
         [, [@category_name =] 'category' ]   
         [, [@owner_login_name =] 'login' ]  
         [, [@notify_level_eventlog =] eventlog_level ]  
         [, [@notify_level_email =] email_level ]  
         [, [@notify_level_netsend =] netsend_level ]  
         [, [@notify_level_page =] page_level ]  
         [, [@notify_email_operator_name =] 'operator_name' ]  
         [, [@notify_netsend_operator_name =] 'netsend_operator' ]  
         [, [@notify_page_operator_name =] 'page_operator' ]  
         [, [@delete_level =] delete_level ]   
         [, [@automatic_post =] automatic_post ]

    sp_update_jobについては、Microsoftのドキュメントを参照してください。 各パラメータの説明と、それぞれが受け入れる値について説明します。


    1. テーブル名をplsqlパラメータとして渡す

    2. ClusterControlを使用してHAProxyメトリックを監視する方法

    3. SQLServerのトップ5データモデリングツール

    4. psycopg2は実際にはデータを挿入していません