sp_add_job (Transact-SQL)

SQL Server エージェント サービスによって実行される新しいジョブを追加します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_add_job [ @job_name = ] 'job_name'
     [ , [ @enabled = ] enabled ] 
     [ , [ @description = ] 'description' ] 
     [ , [ @start_step_id = ] step_id ] 
     [ , [ @category_name = ] 'category' ] 
     [ , [ @category_id = ] category_id ] 
     [ , [ @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 = ] 'email_name' ] 
          [ , [ @notify_netsend_operator_name = ] 'netsend_name' ] 
     [ , [ @notify_page_operator_name = ] 'page_name' ] 
     [ , [ @delete_level = ] delete_level ] 
     [ , [ @job_id = ] job_id OUTPUT ] 

引数

  • [ @job_name =] 'job_name'
    ジョブの名前を指定します。この名前は一意であることが必要で、パーセント (%) 文字は使用できません。job_name のデータ型は nvarchar(128) で、既定値はありません。

  • [ @enabled = ] enabled
    追加されるジョブの状態を指定します。enabled のデータ型は tinyint で、既定値は 1 (有効) です。0 を指定した場合、ジョブは無効になり、スケジュールに従って実行されません。ただし手動で実行することはできます。

  • [ @description =] 'description'
    ジョブの説明を指定します。description のデータ型は nvarchar(512) で、既定値は NULL です。description を指定しない場合は、"使用できる説明はありません" という説明が使用されます。

  • [ @start_step_id = ] step_id
    ジョブで実行する最初のステップの ID 番号を指定します。step_id のデータ型は int で、既定値は 1 です。

  • [ @category_name = ] 'category'
    ジョブのカテゴリを指定します。category のデータ型は sysname で、既定値は NULL です。

  • [ @category_id = ] category_id
    ジョブ カテゴリを指定するための、言語に依存しないメカニズムを指定します。category_id のデータ型は int で、既定値は NULL です。

  • [ @owner_login_name = ] 'login'
    ジョブを所有するログインの名前を指定します。login のデータ型は sysname で、既定値は NULL です。NULL の場合は現在のログイン名と見なされます。@owner_login_name の値を設定または変更できるのは、sysadmin 固定サーバー ロールのメンバだけです。sysadmin ロールのメンバ以外のユーザーが @owner_login_name の値を設定または変更すると、このストアド プロシージャの実行は失敗し、エラーが返されます。

  • [ @notify_level_eventlog = ] eventlog_level
    対象となるジョブのエントリをいつ Microsoft Windows アプリケーション ログに記録するかを示す値を指定します。eventlog_level のデータ型は int で、次のいずれかの値を指定できます。

    説明

    0

    なし

    1

    成功時

    2 (既定値)

    失敗時

    3

    毎回

  • [ @notify_level_email = ] email_level
    対象となるジョブの完了後、いつ電子メールを送信するかを示す値を指定します。email_level のデータ型は int で、既定値は 0 です。既定値は送信しないことを示します。email_level では、eventlog_level と同じ値を使用します。

  • [ @notify_level_netsend = ] netsend_level
    対象となるジョブの完了後、いつネットワーク メッセージを送信するかを示す値を指定します。netsend_level のデータ型は int で、既定値は 0 です。既定値は送信しないことを示します。netsend_level では、eventlog_level と同じ値を使用します。

  • [ @notify_level_page = ] page_level
    対象となるジョブの完了後、いつポケットベルのメッセージを送信するかを示す値を指定します。page_level のデータ型は int で、既定値は 0 です。既定値は送信しないことを示します。page_level では、eventlog_level と同じ値を使用します。

  • [ @notify_email_operator_name = ] 'email_name'
    email_level に達したときに電子メールの送信先となる相手の電子メール名を指定します。email_name のデータ型は sysname で、既定値は NULL です。

  • [ @notify_netsend_operator_name = ] 'netsend_name'
    対象となるジョブの完了時にネットワーク メッセージの送信先となるオペレータの名前を指定します。netsend_name のデータ型は sysname で、既定値は NULL です。

  • [ @notify_page_operator_name = ] 'page_name'
    対象となるジョブの完了時にポケットベルのメッセージの送信先となる相手の名前を指定します。page_name のデータ型は sysname で、既定値は NULL です。

  • [ @delete_level = ] delete_level
    いつジョブを削除するかを示す値を指定します。delete_value のデータ型は int で、既定値は 0 です。既定値は削除しないことを示します。delete_level では、eventlog_level と同じ値を使用します。

    注意

    delete_level が 3 の場合、ジョブは、定義されているスケジュールに関係なく 1 回だけ実行されます。また、ジョブが自分自身を削除した場合、そのジョブのすべての履歴も削除されます。

  • [ @job_id = ] job_idOUTPUT
    ジョブの作成が成功したときにジョブに割り当てられるジョブ ID 番号を指定します。job_id は uniqueidentifier 型の出力変数で、既定値は NULL です。

リターン コードの値

0 (成功) または 1 (失敗)

結果セット

なし

説明

@originating_serversp_add_job に含まれていますが、「引数」の項には記載されていません。@originating_server は内部で使用するために予約されています。

sp_add_job を実行してジョブを追加した後は、sp_add_jobstep を使用して、ジョブの処理を実行するステップを追加できます。また、sp_add_jobschedule を使用して、SQL Server エージェント サービスがジョブを実行するときに使用するスケジュールを作成できます。ジョブを実行する SQL Server インスタンスを設定するには sp_add_jobserver を使用し、SQL Server インスタンスからジョブを削除するには sp_delete_jobserver を使用します。

マルチサーバー環境の 1 つ以上の対象サーバーでジョブを実行する場合に、ジョブの対象サーバーまたは対象サーバー グループを設定するには、sp_apply_job_to_targets を使用します。対象サーバーまたは対象サーバー グループからジョブを削除するには、sp_remove_job_from_targets を使用します。

SQL Server Management Studio は、ジョブを簡単に管理できるグラフィカルなツールです。ジョブのインフラストラクチャを作成し、管理するには、このツールを使用することをお勧めします。

権限

このストアド プロシージャを実行するには、ユーザーは、sysadmin 固定サーバー ロールのメンバであるか、msdb データベース内にある次のいずれかの SQL Server エージェント固定データベース ロールが与えられている必要があります。

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

これらの各固定データベース ロールに関連付けられている特定の権限の詳細については、「SQL Server エージェントの固定データベース ロール」を参照してください。

@owner_login_name の値を設定または変更できるのは、sysadmin 固定サーバー ロールのメンバだけです。sysadmin ロールのメンバ以外のユーザーが @owner_login_name の値を設定または変更すると、このストアド プロシージャの実行は失敗し、エラーが返されます。

A. ジョブを追加する

次の例では、NightlyBackups という新しいジョブを追加します。

USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'NightlyBackups' ;
GO

B. ポケットベル、電子メール、Net Send で情報を送るジョブを追加する

次の例では、Ad hoc Sales Data Backup というジョブを作成します。このジョブが失敗したときにはポケットベル、電子メール、またはネットワーク ポップアップ メッセージを使って François Ajenstat に通知し、ジョブが正常に完了したときにはジョブを削除します。

注意

この例では、François Ajenstat というオペレータと、françoisa というログインが存在することを前提としています。

USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'Ad hoc Sales Data Backup', 
    @enabled = 1,
    @description = N'Ad hoc backup of sales data',
    @owner_login_name = N'françoisa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_level_netsend = 2,
    @notify_level_page = 2,
    @notify_email_operator_name = N'François Ajenstat',
    @notify_netsend_operator_name = N'François Ajenstat', 
    @notify_page_operator_name = N'François Ajenstat',
    @delete_level = 1 ;
GO